
#ifndef JSTD_FAST_MOD_H
#define JSTD_FAST_MOD_H

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#if defined(_MSC_VER)
#define _CRT_SECURE_NO_WARNINGS
#endif

#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <math.h>
#include <assert.h>

#include <cstdint>
#include <cstddef>
#include <cstdbool>
#include <algorithm>

#include "jstd/uint128_t.h"
#include "jstd/DivUtils.h"

//
// See: https://github.com/lemire/fastmod
// See: https://github.com/pcjentsch/FastModulo.jl
//
// See: https://github.com/ridiculousfish/libdivide/blob/master/libdivide.h
//

namespace jstd {

static const std::uint32_t kMaxModTable = 1024;

struct ModRatio32 {
    uint64_t inverse;
};

struct ModRatio64 {
    uint64_t inv_low;
    uint64_t inv_high;
};

static const ModRatio32 mod_ratio_tbl32[kMaxModTable] = {
    { /*   0 */ 0x0000000000000000ull }, { /*   1 */ 0x0000000000000000ull },
    { /*   2 */ 0x8000000000000000ull }, { /*   3 */ 0x5555555555555556ull },
    { /*   4 */ 0x4000000000000000ull }, { /*   5 */ 0x3333333333333334ull },
    { /*   6 */ 0x2AAAAAAAAAAAAAABull }, { /*   7 */ 0x2492492492492493ull },
    { /*   8 */ 0x2000000000000000ull }, { /*   9 */ 0x1C71C71C71C71C72ull },
    { /*  10 */ 0x199999999999999Aull }, { /*  11 */ 0x1745D1745D1745D2ull },
    { /*  12 */ 0x1555555555555556ull }, { /*  13 */ 0x13B13B13B13B13B2ull },
    { /*  14 */ 0x124924924924924Aull }, { /*  15 */ 0x1111111111111112ull },
    { /*  16 */ 0x1000000000000000ull }, { /*  17 */ 0x0F0F0F0F0F0F0F10ull },
    { /*  18 */ 0x0E38E38E38E38E39ull }, { /*  19 */ 0x0D79435E50D79436ull },
    { /*  20 */ 0x0CCCCCCCCCCCCCCDull }, { /*  21 */ 0x0C30C30C30C30C31ull },
    { /*  22 */ 0x0BA2E8BA2E8BA2E9ull }, { /*  23 */ 0x0B21642C8590B217ull },
    { /*  24 */ 0x0AAAAAAAAAAAAAABull }, { /*  25 */ 0x0A3D70A3D70A3D71ull },
    { /*  26 */ 0x09D89D89D89D89D9ull }, { /*  27 */ 0x097B425ED097B426ull },
    { /*  28 */ 0x0924924924924925ull }, { /*  29 */ 0x08D3DCB08D3DCB09ull },
    { /*  30 */ 0x0888888888888889ull }, { /*  31 */ 0x0842108421084211ull },
    { /*  32 */ 0x0800000000000000ull }, { /*  33 */ 0x07C1F07C1F07C1F1ull },
    { /*  34 */ 0x0787878787878788ull }, { /*  35 */ 0x0750750750750751ull },
    { /*  36 */ 0x071C71C71C71C71Dull }, { /*  37 */ 0x06EB3E45306EB3E5ull },
    { /*  38 */ 0x06BCA1AF286BCA1Bull }, { /*  39 */ 0x0690690690690691ull },
    { /*  40 */ 0x0666666666666667ull }, { /*  41 */ 0x063E7063E7063E71ull },
    { /*  42 */ 0x0618618618618619ull }, { /*  43 */ 0x05F417D05F417D06ull },
    { /*  44 */ 0x05D1745D1745D175ull }, { /*  45 */ 0x05B05B05B05B05B1ull },
    { /*  46 */ 0x0590B21642C8590Cull }, { /*  47 */ 0x0572620AE4C415CAull },
    { /*  48 */ 0x0555555555555556ull }, { /*  49 */ 0x05397829CBC14E5Full },
    { /*  50 */ 0x051EB851EB851EB9ull }, { /*  51 */ 0x0505050505050506ull },
    { /*  52 */ 0x04EC4EC4EC4EC4EDull }, { /*  53 */ 0x04D4873ECADE304Eull },
    { /*  54 */ 0x04BDA12F684BDA13ull }, { /*  55 */ 0x04A7904A7904A791ull },
    { /*  56 */ 0x0492492492492493ull }, { /*  57 */ 0x047DC11F7047DC12ull },
    { /*  58 */ 0x0469EE58469EE585ull }, { /*  59 */ 0x0456C797DD49C342ull },
    { /*  60 */ 0x0444444444444445ull }, { /*  61 */ 0x04325C53EF368EB1ull },
    { /*  62 */ 0x0421084210842109ull }, { /*  63 */ 0x0410410410410411ull },
    { /*  64 */ 0x0400000000000000ull }, { /*  65 */ 0x03F03F03F03F03F1ull },
    { /*  66 */ 0x03E0F83E0F83E0F9ull }, { /*  67 */ 0x03D226357E16ECE6ull },
    { /*  68 */ 0x03C3C3C3C3C3C3C4ull }, { /*  69 */ 0x03B5CC0ED7303B5Dull },
    { /*  70 */ 0x03A83A83A83A83A9ull }, { /*  71 */ 0x039B0AD12073615Bull },
    { /*  72 */ 0x038E38E38E38E38Full }, { /*  73 */ 0x0381C0E070381C0Full },
    { /*  74 */ 0x03759F22983759F3ull }, { /*  75 */ 0x0369D0369D0369D1ull },
    { /*  76 */ 0x035E50D79435E50Eull }, { /*  77 */ 0x03531DEC0D4C77B1ull },
    { /*  78 */ 0x0348348348348349ull }, { /*  79 */ 0x033D91D2A2067B24ull },
    { /*  80 */ 0x0333333333333334ull }, { /*  81 */ 0x0329161F9ADD3C0Dull },
    { /*  82 */ 0x031F3831F3831F39ull }, { /*  83 */ 0x03159721ED7E7535ull },
    { /*  84 */ 0x030C30C30C30C30Dull }, { /*  85 */ 0x0303030303030304ull },
    { /*  86 */ 0x02FA0BE82FA0BE83ull }, { /*  87 */ 0x02F149902F149903ull },
    { /*  88 */ 0x02E8BA2E8BA2E8BBull }, { /*  89 */ 0x02E05C0B81702E06ull },
    { /*  90 */ 0x02D82D82D82D82D9ull }, { /*  91 */ 0x02D02D02D02D02D1ull },
    { /*  92 */ 0x02C8590B21642C86ull }, { /*  93 */ 0x02C0B02C0B02C0B1ull },
    { /*  94 */ 0x02B9310572620AE5ull }, { /*  95 */ 0x02B1DA46102B1DA5ull },
    { /*  96 */ 0x02AAAAAAAAAAAAABull }, { /*  97 */ 0x02A3A0FD5C5F02A4ull },
    { /*  98 */ 0x029CBC14E5E0A730ull }, { /*  99 */ 0x0295FAD40A57EB51ull },
    { /* 100 */ 0x028F5C28F5C28F5Dull }, { /* 101 */ 0x0288DF0CAC5B3F5Eull },
    { /* 102 */ 0x0282828282828283ull }, { /* 103 */ 0x027C45979C952050ull },
    { /* 104 */ 0x0276276276276277ull }, { /* 105 */ 0x0270270270270271ull },
    { /* 106 */ 0x026A439F656F1827ull }, { /* 107 */ 0x02647C69456217EDull },
    { /* 108 */ 0x025ED097B425ED0Aull }, { /* 109 */ 0x02593F69B02593F7ull },
    { /* 110 */ 0x0253C8253C8253C9ull }, { /* 111 */ 0x024E6A171024E6A2ull },
    { /* 112 */ 0x024924924924924Aull }, { /* 113 */ 0x0243F6F0243F6F03ull },
    { /* 114 */ 0x023EE08FB823EE09ull }, { /* 115 */ 0x0239E0D5B450239Full },
    { /* 116 */ 0x0234F72C234F72C3ull }, { /* 117 */ 0x0230230230230231ull },
    { /* 118 */ 0x022B63CBEEA4E1A1ull }, { /* 119 */ 0x0226B90226B90227ull },
    { /* 120 */ 0x0222222222222223ull }, { /* 121 */ 0x021D9EAD7CD391FCull },
    { /* 122 */ 0x02192E29F79B4759ull }, { /* 123 */ 0x0214D0214D0214D1ull },
    { /* 124 */ 0x0210842108421085ull }, { /* 125 */ 0x020C49BA5E353F7Dull },
    { /* 126 */ 0x0208208208208209ull }, { /* 127 */ 0x0204081020408103ull },
    { /* 128 */ 0x0200000000000000ull }, { /* 129 */ 0x01FC07F01FC07F02ull },
    { /* 130 */ 0x01F81F81F81F81F9ull }, { /* 131 */ 0x01F44659E4A42716ull },
    { /* 132 */ 0x01F07C1F07C1F07Dull }, { /* 133 */ 0x01ECC07B301ECC08ull },
    { /* 134 */ 0x01E9131ABF0B7673ull }, { /* 135 */ 0x01E573AC901E573Bull },
    { /* 136 */ 0x01E1E1E1E1E1E1E2ull }, { /* 137 */ 0x01DE5D6E3F8868A5ull },
    { /* 138 */ 0x01DAE6076B981DAFull }, { /* 139 */ 0x01D77B654B82C33Aull },
    { /* 140 */ 0x01D41D41D41D41D5ull }, { /* 141 */ 0x01D0CB58F6EC0744ull },
    { /* 142 */ 0x01CD85689039B0AEull }, { /* 143 */ 0x01CA4B3055EE1911ull },
    { /* 144 */ 0x01C71C71C71C71C8ull }, { /* 145 */ 0x01C3F8F01C3F8F02ull },
    { /* 146 */ 0x01C0E070381C0E08ull }, { /* 147 */ 0x01BDD2B899406F75ull },
    { /* 148 */ 0x01BACF914C1BACFAull }, { /* 149 */ 0x01B7D6C3DDA338B3ull },
    { /* 150 */ 0x01B4E81B4E81B4E9ull }, { /* 151 */ 0x01B2036406C80D91ull },
    { /* 152 */ 0x01AF286BCA1AF287ull }, { /* 153 */ 0x01AC5701AC5701ADull },
    { /* 154 */ 0x01A98EF606A63BD9ull }, { /* 155 */ 0x01A6D01A6D01A6D1ull },
    { /* 156 */ 0x01A41A41A41A41A5ull }, { /* 157 */ 0x01A16D3F97A4B01Bull },
    { /* 158 */ 0x019EC8E951033D92ull }, { /* 159 */ 0x019C2D14EE4A101Aull },
    { /* 160 */ 0x019999999999999Aull }, { /* 161 */ 0x01970E4F80CB8728ull },
    { /* 162 */ 0x01948B0FCD6E9E07ull }, { /* 163 */ 0x01920FB49D0E228Eull },
    { /* 164 */ 0x018F9C18F9C18F9Dull }, { /* 165 */ 0x018D3018D3018D31ull },
    { /* 166 */ 0x018ACB90F6BF3A9Bull }, { /* 167 */ 0x01886E5F0ABB049Aull },
    { /* 168 */ 0x0186186186186187ull }, { /* 169 */ 0x0183C977AB2BEDD3ull },
    { /* 170 */ 0x0181818181818182ull }, { /* 171 */ 0x017F405FD017F406ull },
    { /* 172 */ 0x017D05F417D05F42ull }, { /* 173 */ 0x017AD2208E0ECC36ull },
    { /* 174 */ 0x0178A4C8178A4C82ull }, { /* 175 */ 0x01767DCE434A9B11ull },
    { /* 176 */ 0x01745D1745D1745Eull }, { /* 177 */ 0x01724287F46DEBC1ull },
    { /* 178 */ 0x01702E05C0B81703ull }, { /* 179 */ 0x016E1F76B4337C6Dull },
    { /* 180 */ 0x016C16C16C16C16Dull }, { /* 181 */ 0x016A13CD15372905ull },
    { /* 182 */ 0x0168168168168169ull }, { /* 183 */ 0x01661EC6A5122F91ull },
    { /* 184 */ 0x01642C8590B21643ull }, { /* 185 */ 0x01623FA7701623FBull },
    { /* 186 */ 0x0160581605816059ull }, { /* 187 */ 0x015E75BB8D015E76ull },
    { /* 188 */ 0x015C9882B9310573ull }, { /* 189 */ 0x015AC056B015AC06ull },
    { /* 190 */ 0x0158ED2308158ED3ull }, { /* 191 */ 0x01571ED3C506B39Bull },
    { /* 192 */ 0x0155555555555556ull }, { /* 193 */ 0x015390948F40FEADull },
    { /* 194 */ 0x0151D07EAE2F8152ull }, { /* 195 */ 0x0150150150150151ull },
    { /* 196 */ 0x014E5E0A72F05398ull }, { /* 197 */ 0x014CAB88725AF6E8ull },
    { /* 198 */ 0x014AFD6A052BF5A9ull }, { /* 199 */ 0x0149539E3B2D066Full },
    { /* 200 */ 0x0147AE147AE147AFull }, { /* 201 */ 0x01460CBC7F5CF9A2ull },
    { /* 202 */ 0x01446F86562D9FAFull }, { /* 203 */ 0x0142D6625D51F86Full },
    { /* 204 */ 0x0141414141414142ull }, { /* 205 */ 0x013FB013FB013FB1ull },
    { /* 206 */ 0x013E22CBCE4A9028ull }, { /* 207 */ 0x013C995A47BABE75ull },
    { /* 208 */ 0x013B13B13B13B13Cull }, { /* 209 */ 0x013991C2C187F634ull },
    { /* 210 */ 0x0138138138138139ull }, { /* 211 */ 0x013698DF3DE0747Aull },
    { /* 212 */ 0x013521CFB2B78C14ull }, { /* 213 */ 0x0133AE45B57BCB1Full },
    { /* 214 */ 0x01323E34A2B10BF7ull }, { /* 215 */ 0x0130D190130D1902ull },
    { /* 216 */ 0x012F684BDA12F685ull }, { /* 217 */ 0x012E025C04B80971ull },
    { /* 218 */ 0x012C9FB4D812C9FCull }, { /* 219 */ 0x012B404AD012B405ull },
    { /* 220 */ 0x0129E4129E4129E5ull }, { /* 221 */ 0x01288B01288B0129ull },
    { /* 222 */ 0x0127350B88127351ull }, { /* 223 */ 0x0125E22708092F12ull },
    { /* 224 */ 0x0124924924924925ull }, { /* 225 */ 0x0123456789ABCDF1ull },
    { /* 226 */ 0x0121FB78121FB782ull }, { /* 227 */ 0x0120B470C67C0D89ull },
    { /* 228 */ 0x011F7047DC11F705ull }, { /* 229 */ 0x011E2EF3B3FB8745ull },
    { /* 230 */ 0x011CF06ADA2811D0ull }, { /* 231 */ 0x011BB4A4046ED291ull },
    { /* 232 */ 0x011A7B9611A7B962ull }, { /* 233 */ 0x0119453808CA29C1ull },
    { /* 234 */ 0x0118118118118119ull }, { /* 235 */ 0x0116E0689427378Full },
    { /* 236 */ 0x0115B1E5F75270D1ull }, { /* 237 */ 0x011485F0E0ACD3B7ull },
    { /* 238 */ 0x01135C81135C8114ull }, { /* 239 */ 0x0112358E75D30337ull },
    { /* 240 */ 0x0111111111111112ull }, { /* 241 */ 0x010FEF010FEF0110ull },
    { /* 242 */ 0x010ECF56BE69C8FEull }, { /* 243 */ 0x010DB20A88F4695Aull },
    { /* 244 */ 0x010C9714FBCDA3ADull }, { /* 245 */ 0x010B7E6EC259DC7Aull },
    { /* 246 */ 0x010A6810A6810A69ull }, { /* 247 */ 0x010953F390109540ull },
    { /* 248 */ 0x0108421084210843ull }, { /* 249 */ 0x01073260A47F7C67ull },
    { /* 250 */ 0x010624DD2F1A9FBFull }, { /* 251 */ 0x0105197F7D734042ull },
    { /* 252 */ 0x0104104104104105ull }, { /* 253 */ 0x0103091B51F5E1A5ull },
    { /* 254 */ 0x0102040810204082ull }, { /* 255 */ 0x0101010101010102ull },
    { /* 256 */ 0x0100000000000000ull }, { /* 257 */ 0x00FF00FF00FF0100ull },
    { /* 258 */ 0x00FE03F80FE03F81ull }, { /* 259 */ 0x00FD08E5500FD08Full },
    { /* 260 */ 0x00FC0FC0FC0FC0FDull }, { /* 261 */ 0x00FB18856506DDACull },
    { /* 262 */ 0x00FA232CF252138Bull }, { /* 263 */ 0x00F92FB2211855A9ull },
    { /* 264 */ 0x00F83E0F83E0F83Full }, { /* 265 */ 0x00F74E3FC22C7010ull },
    { /* 266 */ 0x00F6603D980F6604ull }, { /* 267 */ 0x00F57403D5D00F58ull },
    { /* 268 */ 0x00F4898D5F85BB3Aull }, { /* 269 */ 0x00F3A0D52CBA8724ull },
    { /* 270 */ 0x00F2B9D6480F2B9Eull }, { /* 271 */ 0x00F1D48BCEE0D39Aull },
    { /* 272 */ 0x00F0F0F0F0F0F0F1ull }, { /* 273 */ 0x00F00F00F00F00F1ull },
    { /* 274 */ 0x00EF2EB71FC43453ull }, { /* 275 */ 0x00EE500EE500EE51ull },
    { /* 276 */ 0x00ED7303B5CC0ED8ull }, { /* 277 */ 0x00EC979118F3FC4Eull },
    { /* 278 */ 0x00EBBDB2A5C1619Dull }, { /* 279 */ 0x00EAE56403AB9591ull },
    { /* 280 */ 0x00EA0EA0EA0EA0EBull }, { /* 281 */ 0x00E939651FE2D8D4ull },
    { /* 282 */ 0x00E865AC7B7603A2ull }, { /* 283 */ 0x00E79372E225FE31ull },
    { /* 284 */ 0x00E6C2B4481CD857ull }, { /* 285 */ 0x00E5F36CB00E5F37ull },
    { /* 286 */ 0x00E525982AF70C89ull }, { /* 287 */ 0x00E45932D7DC5211ull },
    { /* 288 */ 0x00E38E38E38E38E4ull }, { /* 289 */ 0x00E2C4A6886A4C2Full },
    { /* 290 */ 0x00E1FC780E1FC781ull }, { /* 291 */ 0x00E135A9C97500E2ull },
    { /* 292 */ 0x00E070381C0E0704ull }, { /* 293 */ 0x00DFAC1F74346C58ull },
    { /* 294 */ 0x00DEE95C4CA037BBull }, { /* 295 */ 0x00DE27EB2C41F3DAull },
    { /* 296 */ 0x00DD67C8A60DD67Dull }, { /* 297 */ 0x00DCA8F158C7F91Bull },
    { /* 298 */ 0x00DBEB61EED19C5Aull }, { /* 299 */ 0x00DB2F171DF7702Aull },
    { /* 300 */ 0x00DA740DA740DA75ull }, { /* 301 */ 0x00D9BA4256C0366Full },
    { /* 302 */ 0x00D901B2036406C9ull }, { /* 303 */ 0x00D84A598EC91520ull },
    { /* 304 */ 0x00D79435E50D7944ull }, { /* 305 */ 0x00D6DF43FCA482F1ull },
    { /* 306 */ 0x00D62B80D62B80D7ull }, { /* 307 */ 0x00D578E97C3F5FE6ull },
    { /* 308 */ 0x00D4C77B03531DEDull }, { /* 309 */ 0x00D4173289870AC6ull },
    { /* 310 */ 0x00D3680D3680D369ull }, { /* 311 */ 0x00D2BA083B445251ull },
    { /* 312 */ 0x00D20D20D20D20D3ull }, { /* 313 */ 0x00D161543E28E503ull },
    { /* 314 */ 0x00D0B69FCBD2580Eull }, { /* 315 */ 0x00D00D00D00D00D1ull },
    { /* 316 */ 0x00CF6474A8819EC9ull }, { /* 317 */ 0x00CEBCF8BB5B416Aull },
    { /* 318 */ 0x00CE168A7725080Dull }, { /* 319 */ 0x00CD712752A886D3ull },
    { /* 320 */ 0x00CCCCCCCCCCCCCDull }, { /* 321 */ 0x00CC29786C7607FAull },
    { /* 322 */ 0x00CB8727C065C394ull }, { /* 323 */ 0x00CAE5D85F1BBD6Dull },
    { /* 324 */ 0x00CA4587E6B74F04ull }, { /* 325 */ 0x00C9A633FCD96731ull },
    { /* 326 */ 0x00C907DA4E871147ull }, { /* 327 */ 0x00C86A78900C86A8ull },
    { /* 328 */ 0x00C7CE0C7CE0C7CFull }, { /* 329 */ 0x00C73293D789B9F9ull },
    { /* 330 */ 0x00C6980C6980C699ull }, { /* 331 */ 0x00C5FE740317F9D1ull },
    { /* 332 */ 0x00C565C87B5F9D4Eull }, { /* 333 */ 0x00C4CE07B00C4CE1ull },
    { /* 334 */ 0x00C4372F855D824Dull }, { /* 335 */ 0x00C3A13DE60495C8ull },
    { /* 336 */ 0x00C30C30C30C30C4ull }, { /* 337 */ 0x00C2780613C0309Full },
    { /* 338 */ 0x00C1E4BBD595F6EAull }, { /* 339 */ 0x00C152500C152501ull },
    { /* 340 */ 0x00C0C0C0C0C0C0C1ull }, { /* 341 */ 0x00C0300C0300C031ull },
    { /* 342 */ 0x00BFA02FE80BFA03ull }, { /* 343 */ 0x00BF112A8AD278E9ull },
    { /* 344 */ 0x00BE82FA0BE82FA1ull }, { /* 345 */ 0x00BDF59C91700BE0ull },
    { /* 346 */ 0x00BD69104707661Bull }, { /* 347 */ 0x00BCDD535DB1CC5Cull },
    { /* 348 */ 0x00BC52640BC52641ull }, { /* 349 */ 0x00BBC8408CD6306Aull },
    { /* 350 */ 0x00BB3EE721A54D89ull }, { /* 351 */ 0x00BAB656100BAB66ull },
    { /* 352 */ 0x00BA2E8BA2E8BA2Full }, { /* 353 */ 0x00B9A7862A0FF466ull },
    { /* 354 */ 0x00B92143FA36F5E1ull }, { /* 355 */ 0x00B89BC36CE3E046ull },
    { /* 356 */ 0x00B81702E05C0B82ull }, { /* 357 */ 0x00B79300B79300B8ull },
    { /* 358 */ 0x00B70FBB5A19BE37ull }, { /* 359 */ 0x00B68D31340E4308ull },
    { /* 360 */ 0x00B60B60B60B60B7ull }, { /* 361 */ 0x00B58A485518D1E8ull },
    { /* 362 */ 0x00B509E68A9B9483ull }, { /* 363 */ 0x00B48A39D44685FFull },
    { /* 364 */ 0x00B40B40B40B40B5ull }, { /* 365 */ 0x00B38CF9B00B38D0ull },
    { /* 366 */ 0x00B30F63528917C9ull }, { /* 367 */ 0x00B2927C29DA551Aull },
    { /* 368 */ 0x00B21642C8590B22ull }, { /* 369 */ 0x00B19AB5C45606F1ull },
    { /* 370 */ 0x00B11FD3B80B11FEull }, { /* 371 */ 0x00B0A59B418D749Eull },
    { /* 372 */ 0x00B02C0B02C0B02Dull }, { /* 373 */ 0x00AFB321A1496FE0ull },
    { /* 374 */ 0x00AF3ADDC680AF3Bull }, { /* 375 */ 0x00AEC33E1F67152Aull },
    { /* 376 */ 0x00AE4C415C9882BAull }, { /* 377 */ 0x00ADD5E6323FD48Bull },
    { /* 378 */ 0x00AD602B580AD603ull }, { /* 379 */ 0x00ACEB0F891E6552ull },
    { /* 380 */ 0x00AC7691840AC76Aull }, { /* 381 */ 0x00AC02B00AC02B01ull },
    { /* 382 */ 0x00AB8F69E28359CEull }, { /* 383 */ 0x00AB1CBDD3E29710ull },
    { /* 384 */ 0x00AAAAAAAAAAAAABull }, { /* 385 */ 0x00AA392F35DC17F1ull },
    { /* 386 */ 0x00A9C84A47A07F57ull }, { /* 387 */ 0x00A957FAB5402A56ull },
    { /* 388 */ 0x00A8E83F5717C0A9ull }, { /* 389 */ 0x00A87917088E262Cull },
    { /* 390 */ 0x00A80A80A80A80A9ull }, { /* 391 */ 0x00A79C7B16EA64D5ull },
    { /* 392 */ 0x00A72F05397829CCull }, { /* 393 */ 0x00A6C21DF6E1625Dull },
    { /* 394 */ 0x00A655C4392D7B74ull }, { /* 395 */ 0x00A5E9F6ED347F08ull },
    { /* 396 */ 0x00A57EB50295FAD5ull }, { /* 397 */ 0x00A513FD6BB00A52ull },
    { /* 398 */ 0x00A4A9CF1D968338ull }, { /* 399 */ 0x00A44029100A4403ull },
    { /* 400 */ 0x00A3D70A3D70A3D8ull }, { /* 401 */ 0x00A36E71A2CB0332ull },
    { /* 402 */ 0x00A3065E3FAE7CD1ull }, { /* 403 */ 0x00A29ECF163BB651ull },
    { /* 404 */ 0x00A237C32B16CFD8ull }, { /* 405 */ 0x00A1D139855F7269ull },
    { /* 406 */ 0x00A16B312EA8FC38ull }, { /* 407 */ 0x00A105A932F2CA8Aull },
    { /* 408 */ 0x00A0A0A0A0A0A0A1ull }, { /* 409 */ 0x00A03C1688732B31ull },
    { /* 410 */ 0x009FD809FD809FD9ull }, { /* 411 */ 0x009F747A152D7837ull },
    { /* 412 */ 0x009F1165E7254814ull }, { /* 413 */ 0x009EAECC8D53AE2Eull },
    { /* 414 */ 0x009E4CAD23DD5F3Bull }, { /* 415 */ 0x009DEB06C9194AA5ull },
    { /* 416 */ 0x009D89D89D89D89Eull }, { /* 417 */ 0x009D2921C3D64114ull },
    { /* 418 */ 0x009CC8E160C3FB1Aull }, { /* 419 */ 0x009C69169B30446Eull },
    { /* 420 */ 0x009C09C09C09C09Dull }, { /* 421 */ 0x009BAADE8E4A2F6Full },
    { /* 422 */ 0x009B4C6F9EF03A3Dull }, { /* 423 */ 0x009AEE72FCF957C2ull },
    { /* 424 */ 0x009A90E7D95BC60Aull }, { /* 425 */ 0x009A33CD67009A34ull },
    { /* 426 */ 0x0099D722DABDE590ull }, { /* 427 */ 0x00997AE76B50EFD1ull },
    { /* 428 */ 0x00991F1A515885FCull }, { /* 429 */ 0x0098C3BAC74F5DB1ull },
    { /* 430 */ 0x009868C809868C81ull }, { /* 431 */ 0x00980E4156201302ull },
    { /* 432 */ 0x0097B425ED097B43ull }, { /* 433 */ 0x00975A750FF68A59ull },
    { /* 434 */ 0x0097012E025C04B9ull }, { /* 435 */ 0x0096A850096A8501ull },
    { /* 436 */ 0x00964FDA6C0964FEull }, { /* 437 */ 0x0095F7CC72D1B888ull },
    { /* 438 */ 0x0095A02568095A03ull }, { /* 439 */ 0x009548E4979E082Aull },
    { /* 440 */ 0x0094F2094F2094F3ull }, { /* 441 */ 0x00949B92DDC02527ull },
    { /* 442 */ 0x0094458094458095ull }, { /* 443 */ 0x0093EFD1C50E726Cull },
    { /* 444 */ 0x00939A85C40939A9ull }, { /* 445 */ 0x0093459BE6B00935ull },
    { /* 446 */ 0x0092F11384049789ull }, { /* 447 */ 0x00929CEBF48BBD91ull },
    { /* 448 */ 0x0092492492492493ull }, { /* 449 */ 0x0091F5BCB8BB02DAull },
    { /* 450 */ 0x0091A2B3C4D5E6F9ull }, { /* 451 */ 0x0091500915009151ull },
    { /* 452 */ 0x0090FDBC090FDBC1ull }, { /* 453 */ 0x0090ABCC0242AF31ull },
    { /* 454 */ 0x00905A38633E06C5ull }, { /* 455 */ 0x0090090090090091ull },
    { /* 456 */ 0x008FB823EE08FB83ull }, { /* 457 */ 0x008F67A1E3FDC262ull },
    { /* 458 */ 0x008F1779D9FDC3A3ull }, { /* 459 */ 0x008EC7AB397255E5ull },
    { /* 460 */ 0x008E78356D1408E8ull }, { /* 461 */ 0x008E2917E0E702C7ull },
    { /* 462 */ 0x008DDA5202376949ull }, { /* 463 */ 0x008D8BE33F95D716ull },
    { /* 464 */ 0x008D3DCB08D3DCB1ull }, { /* 465 */ 0x008CF008CF008CF1ull },
    { /* 466 */ 0x008CA29C046514E1ull }, { /* 467 */ 0x008C55841C815ED6ull },
    { /* 468 */ 0x008C08C08C08C08Dull }, { /* 469 */ 0x008BBC50C8DEB421ull },
    { /* 470 */ 0x008B70344A139BC8ull }, { /* 471 */ 0x008B246A87E19009ull },
    { /* 472 */ 0x008AD8F2FBA93869ull }, { /* 473 */ 0x008A8DCD1FEEAE47ull },
    { /* 474 */ 0x008A42F8705669DCull }, { /* 475 */ 0x0089F87469A23921ull },
    { /* 476 */ 0x0089AE4089AE408Aull }, { /* 477 */ 0x0089645C4F6E055Eull },
    { /* 478 */ 0x00891AC73AE9819Cull }, { /* 479 */ 0x0088D180CD3A4134ull },
    { /* 480 */ 0x0088888888888889ull }, { /* 481 */ 0x00883FDDF00883FEull },
    { /* 482 */ 0x0087F78087F78088ull }, { /* 483 */ 0x0087AF6FD5992D0Eull },
    { /* 484 */ 0x008767AB5F34E47Full }, { /* 485 */ 0x00872032AC130088ull },
    { /* 486 */ 0x0086D905447A34ADull }, { /* 487 */ 0x00869222B1ACF1CFull },
    { /* 488 */ 0x00864B8A7DE6D1D7ull }, { /* 489 */ 0x0086053C345A0B85ull },
    { /* 490 */ 0x0085BF37612CEE3Dull }, { /* 491 */ 0x0085797B917765ACull },
    { /* 492 */ 0x0085340853408535ull }, { /* 493 */ 0x0084EEDD357C1B01ull },
    { /* 494 */ 0x0084A9F9C8084AA0ull }, { /* 495 */ 0x0084655D9BAB2F11ull },
    { /* 496 */ 0x0084210842108422ull }, { /* 497 */ 0x0083DCF94DC7570Dull },
    { /* 498 */ 0x00839930523FBE34ull }, { /* 499 */ 0x008355ACE3C897DCull },
    { /* 500 */ 0x0083126E978D4FE0ull }, { /* 501 */ 0x0082CF750393AC34ull },
    { /* 502 */ 0x00828CBFBEB9A021ull }, { /* 503 */ 0x00824A4E60B3262Cull },
    { /* 504 */ 0x0082082082082083ull }, { /* 505 */ 0x0081C635BC123FE0ull },
    { /* 506 */ 0x0081848DA8FAF0D3ull }, { /* 507 */ 0x00814327E3B94F47ull },
    { /* 508 */ 0x0081020408102041ull }, { /* 509 */ 0x0080C121B28BD1BBull },
    { /* 510 */ 0x0080808080808081ull }, { /* 511 */ 0x0080402010080403ull },
    { /* 512 */ 0x0080000000000000ull }, { /* 513 */ 0x007FC01FF007FC02ull },
    { /* 514 */ 0x007F807F807F8080ull }, { /* 515 */ 0x007F411E528439AAull },
    { /* 516 */ 0x007F01FC07F01FC1ull }, { /* 517 */ 0x007EC3184357A4E4ull },
    { /* 518 */ 0x007E8472A807E848ull }, { /* 519 */ 0x007E460ADA04EEBDull },
    { /* 520 */ 0x007E07E07E07E07Full }, { /* 521 */ 0x007DC9F3397D4C2Aull },
    { /* 522 */ 0x007D8C42B2836ED6ull }, { /* 523 */ 0x007D4ECE8FE8813Aull },
    { /* 524 */ 0x007D1196792909C6ull }, { /* 525 */ 0x007CD49A166E33B1ull },
    { /* 526 */ 0x007C97D9108C2AD5ull }, { /* 527 */ 0x007C5B5311007C5Cull },
    { /* 528 */ 0x007C1F07C1F07C20ull }, { /* 529 */ 0x007BE2F6CE27AEB4ull },
    { /* 530 */ 0x007BA71FE1163808ull }, { /* 531 */ 0x007B6B82A6CF4E96ull },
    { /* 532 */ 0x007B301ECC07B302ull }, { /* 533 */ 0x007AF4F3FE142C31ull },
    { /* 534 */ 0x007ABA01EAE807ACull }, { /* 535 */ 0x007A7F4841139E63ull },
    { /* 536 */ 0x007A44C6AFC2DD9Dull }, { /* 537 */ 0x007A0A7CE6BBD425ull },
    { /* 538 */ 0x0079D06A965D4392ull }, { /* 539 */ 0x0079968F6F9D35ACull },
    { /* 540 */ 0x00795CEB240795CFull }, { /* 541 */ 0x0079237D65BCCE51ull },
    { /* 542 */ 0x0078EA45E77069CDull }, { /* 543 */ 0x0078B1445C67B857ull },
    { /* 544 */ 0x0078787878787879ull }, { /* 545 */ 0x00783FE1F00783FFull },
    { /* 546 */ 0x0078078078078079ull }, { /* 547 */ 0x0077CF53C5F7936Dull },
    { /* 548 */ 0x0077975B8FE21A2Aull }, { /* 549 */ 0x00775F978C5B6531ull },
    { /* 550 */ 0x0077280772807729ull }, { /* 551 */ 0x0076F0AAF9F5C752ull },
    { /* 552 */ 0x0076B981DAE6076Cull }, { /* 553 */ 0x0076828BCE00ED06ull },
    { /* 554 */ 0x00764BC88C79FE27ull }, { /* 555 */ 0x00761537D0076154ull },
    { /* 556 */ 0x0075DED952E0B0CFull }, { /* 557 */ 0x0075A8ACCFBDD11Full },
    { /* 558 */ 0x007572B201D5CAC9ull }, { /* 559 */ 0x00753CE8A4DDA728ull },
    { /* 560 */ 0x0075075075075076ull }, { /* 561 */ 0x0074D1E92F0074D2ull },
    { /* 562 */ 0x00749CB28FF16C6Aull }, { /* 563 */ 0x007467AC557C228Full },
    { /* 564 */ 0x007432D63DBB01D1ull }, { /* 565 */ 0x0073FE30073FE301ull },
    { /* 566 */ 0x0073C9B97112FF19ull }, { /* 567 */ 0x007395723AB1E402ull },
    { /* 568 */ 0x0073615A240E6C2Cull }, { /* 569 */ 0x00732D70ED8DB8EAull },
    { /* 570 */ 0x0072F9B658072F9Cull }, { /* 571 */ 0x0072C62A24C37980ull },
    { /* 572 */ 0x007292CC157B8645ull }, { /* 573 */ 0x00725F9BEC579134ull },
    { /* 574 */ 0x00722C996BEE2909ull }, { /* 575 */ 0x0071F9C457433A53ull },
    { /* 576 */ 0x0071C71C71C71C72ull }, { /* 577 */ 0x007194A17F55A10Eull },
    { /* 578 */ 0x0071625344352618ull }, { /* 579 */ 0x007130318515AA3Aull },
    { /* 580 */ 0x0070FE3C070FE3C1ull }, { /* 581 */ 0x0070CC728FA459E3ull },
    { /* 582 */ 0x00709AD4E4BA8071ull }, { /* 583 */ 0x00706962CC9FD5D9ull },
    { /* 584 */ 0x0070381C0E070382ull }, { /* 585 */ 0x0070070070070071ull },
    { /* 586 */ 0x006FD60FBA1A362Cull }, { /* 587 */ 0x006FA549B41DA7E8ull },
    { /* 588 */ 0x006F74AE26501BDEull }, { /* 589 */ 0x006F443CD95146D9ull },
    { /* 590 */ 0x006F13F59620F9EDull }, { /* 591 */ 0x006EE3D8261E524Eull },
    { /* 592 */ 0x006EB3E45306EB3Full }, { /* 593 */ 0x006E8419E6F61222ull },
    { /* 594 */ 0x006E5478AC63FC8Eull }, { /* 595 */ 0x006E25006E25006Full },
    { /* 596 */ 0x006DF5B0F768CE2Dull }, { /* 597 */ 0x006DC68A13B9ACD0ull },
    { /* 598 */ 0x006D978B8EFBB815ull }, { /* 599 */ 0x006D68B5356C207Cull },
    { /* 600 */ 0x006D3A06D3A06D3Bull }, { /* 601 */ 0x006D0B803685C01Cull },
    { /* 602 */ 0x006CDD212B601B38ull }, { /* 603 */ 0x006CAEE97FC9A88Cull },
    { /* 604 */ 0x006C80D901B20365ull }, { /* 605 */ 0x006C52EF7F5D8399ull },
    { /* 606 */ 0x006C252CC7648A90ull }, { /* 607 */ 0x006BF790A8B2D208ull },
    { /* 608 */ 0x006BCA1AF286BCA2ull }, { /* 609 */ 0x006B9CCB7470A825ull },
    { /* 610 */ 0x006B6FA1FE524179ull }, { /* 611 */ 0x006B429E605DDA4Bull },
    { /* 612 */ 0x006B15C06B15C06Cull }, { /* 613 */ 0x006AE907EF4B96C3ull },
    { /* 614 */ 0x006ABC74BE1FAFF3ull }, { /* 615 */ 0x006A9006A9006A91ull },
    { /* 616 */ 0x006A63BD81A98EF7ull }, { /* 617 */ 0x006A37991A23AEAEull },
    { /* 618 */ 0x006A0B9944C38563ull }, { /* 619 */ 0x0069DFBDD4295B67ull },
    { /* 620 */ 0x0069B4069B4069B5ull }, { /* 621 */ 0x006988736D3E3F7Dull },
    { /* 622 */ 0x00695D041DA22929ull }, { /* 623 */ 0x006931B8803498DDull },
    { /* 624 */ 0x006906906906906Aull }, { /* 625 */ 0x0068DB8BAC710CB3ull },
    { /* 626 */ 0x0068B0AA1F147282ull }, { /* 627 */ 0x006885EB95D7FCBCull },
    { /* 628 */ 0x00685B4FE5E92C07ull }, { /* 629 */ 0x006830D6E4BB37C3ull },
    { /* 630 */ 0x0068068068068069ull }, { /* 631 */ 0x0067DC4C45C8033Full },
    { /* 632 */ 0x0067B23A5440CF65ull }, { /* 633 */ 0x0067884A69F57C29ull },
    { /* 634 */ 0x00675E7C5DADA0B5ull }, { /* 635 */ 0x006734D006734D01ull },
    { /* 636 */ 0x00670B453B928407ull }, { /* 637 */ 0x0066E1DBD498B743ull },
    { /* 638 */ 0x0066B893A954436Aull }, { /* 639 */ 0x00668F6C91D3EE60ull },
    { /* 640 */ 0x0066666666666667ull }, { /* 641 */ 0x00663D80FF99C280ull },
    { /* 642 */ 0x006614BC363B03FDull }, { /* 643 */ 0x0065EC17E3559949ull },
    { /* 644 */ 0x0065C393E032E1CAull }, { /* 645 */ 0x00659B300659B301ull },
    { /* 646 */ 0x006572EC2F8DDEB7ull }, { /* 647 */ 0x00654AC835CFBA5Dull },
    { /* 648 */ 0x006522C3F35BA782ull }, { /* 649 */ 0x0064FADF42A99D64ull },
    { /* 650 */ 0x0064D319FE6CB399ull }, { /* 651 */ 0x0064AB740192ADD1ull },
    { /* 652 */ 0x006483ED274388A4ull }, { /* 653 */ 0x00645C854AE10773ull },
    { /* 654 */ 0x0064353C48064354ull }, { /* 655 */ 0x00640E11FA873B05ull },
    { /* 656 */ 0x0063E7063E7063E8ull }, { /* 657 */ 0x0063C018F0063C02ull },
    { /* 658 */ 0x00639949EBC4DCFDull }, { /* 659 */ 0x006372990E5F9020ull },
    { /* 660 */ 0x00634C0634C0634Dull }, { /* 661 */ 0x006325913C07BEF0ull },
    { /* 662 */ 0x0062FF3A018BFCE9ull }, { /* 663 */ 0x0062D90062D90063ull },
    { /* 664 */ 0x0062B2E43DAFCEA7ull }, { /* 665 */ 0x00628CE5700628CFull },
    { /* 666 */ 0x00626703D8062671ull }, { /* 667 */ 0x0062413F540DD12Dull },
    { /* 668 */ 0x00621B97C2AEC127ull }, { /* 669 */ 0x0061F60D02ADBA5Cull },
    { /* 670 */ 0x0061D09EF3024AE4ull }, { /* 671 */ 0x0061AB4D72D66A11ull },
    { /* 672 */ 0x0061861861861862ull }, { /* 673 */ 0x006160FF9E9F0062ull },
    { /* 674 */ 0x00613C0309E01850ull }, { /* 675 */ 0x00611722833944A6ull },
    { /* 676 */ 0x0060F25DEACAFB75ull }, { /* 677 */ 0x0060CDB520E5E88Full },
    { /* 678 */ 0x0060A928060A9281ull }, { /* 679 */ 0x006084B67AE90061ull },
    { /* 680 */ 0x0060606060606061ull }, { /* 681 */ 0x00603C25977EAF2Eull },
    { /* 682 */ 0x0060180601806019ull }, { /* 683 */ 0x005FF4017FD00600ull },
    { /* 684 */ 0x005FD017F405FD02ull }, { /* 685 */ 0x005FAC493FE814EEull },
    { /* 686 */ 0x005F889545693C75ull }, { /* 687 */ 0x005F64FBE6A92D17ull },
    { /* 688 */ 0x005F417D05F417D1ull }, { /* 689 */ 0x005F1E1885C2527Dull },
    { /* 690 */ 0x005EFACE48B805F0ull }, { /* 691 */ 0x005ED79E31A4DCCEull },
    { /* 692 */ 0x005EB4882383B30Eull }, { /* 693 */ 0x005E918C017A4631ull },
    { /* 694 */ 0x005E6EA9AED8E62Eull }, { /* 695 */ 0x005E4BE10F1A270Cull },
    { /* 696 */ 0x005E293205E29321ull }, { /* 697 */ 0x005E069C77005E07ull },
    { /* 698 */ 0x005DE420466B1835ull }, { /* 699 */ 0x005DC1BD58436341ull },
    { /* 700 */ 0x005D9F7390D2A6C5ull }, { /* 701 */ 0x005D7D42D48AC5F0ull },
    { /* 702 */ 0x005D5B2B0805D5B3ull }, { /* 703 */ 0x005D392C1005D393ull },
    { /* 704 */ 0x005D1745D1745D18ull }, { /* 705 */ 0x005CF578316267DBull },
    { /* 706 */ 0x005CD3C31507FA33ull }, { /* 707 */ 0x005CB22661C3E47Cull },
    { /* 708 */ 0x005C90A1FD1B7AF1ull }, { /* 709 */ 0x005C6F35CCBA5029ull },
    { /* 710 */ 0x005C4DE1B671F023ull }, { /* 711 */ 0x005C2CA5A0399BE8ull },
    { /* 712 */ 0x005C0B81702E05C1ull }, { /* 713 */ 0x005BEA750C910E01ull },
    { /* 714 */ 0x005BC9805BC9805Cull }, { /* 715 */ 0x005BA8A34462D1D1ull },
    { /* 716 */ 0x005B87DDAD0CDF1Cull }, { /* 717 */ 0x005B672F7C9BABBDull },
    { /* 718 */ 0x005B46989A072184ull }, { /* 719 */ 0x005B2618EC6AD0A6ull },
    { /* 720 */ 0x005B05B05B05B05Cull }, { /* 721 */ 0x005AE55ECD39E00Cull },
    { /* 722 */ 0x005AC5242A8C68F4ull }, { /* 723 */ 0x005AA5005AA5005Bull },
    { /* 724 */ 0x005A84F3454DCA42ull }, { /* 725 */ 0x005A64FCD2731C9Aull },
    { /* 726 */ 0x005A451CEA234300ull }, { /* 727 */ 0x005A2553748E42E8ull },
    { /* 728 */ 0x005A05A05A05A05Bull }, { /* 729 */ 0x0059E60382FC231Eull },
    { /* 730 */ 0x0059C67CD8059C68ull }, { /* 731 */ 0x0059A70C41D6AD01ull },
    { /* 732 */ 0x005987B1A9448BE5ull }, { /* 733 */ 0x0059686CF744CD5Cull },
    { /* 734 */ 0x0059493E14ED2A8Dull }, { /* 735 */ 0x00592A24EB73497Eull },
    { /* 736 */ 0x00590B21642C8591ull }, { /* 737 */ 0x0058EC33688DB872ull },
    { /* 738 */ 0x0058CD5AE22B0379ull }, { /* 739 */ 0x0058AE97BAB79977ull },
    { /* 740 */ 0x00588FE9DC0588FFull }, { /* 741 */ 0x0058715130058716ull },
    { /* 742 */ 0x005852CDA0C6BA4Full }, { /* 743 */ 0x0058345F18768660ull },
    { /* 744 */ 0x0058160581605817ull }, { /* 745 */ 0x0057F7C0C5ED71BEull },
    { /* 746 */ 0x0057D990D0A4B7F0ull }, { /* 747 */ 0x0057BB758C2A7ECDull },
    { /* 748 */ 0x00579D6EE340579Eull }, { /* 749 */ 0x00577F7CC0C4DED9ull },
    { /* 750 */ 0x0057619F0FB38A95ull }, { /* 751 */ 0x005743D5BB24795Bull },
    { /* 752 */ 0x00572620AE4C415Dull }, { /* 753 */ 0x0057087FD47BC016ull },
    { /* 754 */ 0x0056EAF3191FEA46ull }, { /* 755 */ 0x0056CD7A67C19C51ull },
    { /* 756 */ 0x0056B015AC056B02ull }, { /* 757 */ 0x005692C4D1AB74ACull },
    { /* 758 */ 0x00567587C48F32A9ull }, { /* 759 */ 0x0056585E70A74B37ull },
    { /* 760 */ 0x00563B48C20563B5ull }, { /* 761 */ 0x00561E46A4D5F338ull },
    { /* 762 */ 0x0056015805601581ull }, { /* 763 */ 0x0055E47CD0055E48ull },
    { /* 764 */ 0x0055C7B4F141ACE7ull }, { /* 765 */ 0x0055AB0055AB0056ull },
    { /* 766 */ 0x00558E5EE9F14B88ull }, { /* 767 */ 0x005571D09ADE4A19ull },
    { /* 768 */ 0x0055555555555556ull }, { /* 769 */ 0x005538ED06533998ull },
    { /* 770 */ 0x00551C979AEE0BF9ull }, { /* 771 */ 0x0055005500550056ull },
    { /* 772 */ 0x0054E42523D03FACull }, { /* 773 */ 0x0054C807F2C0BEC3ull },
    { /* 774 */ 0x0054ABFD5AA0152Bull }, { /* 775 */ 0x0054900549005491ull },
    { /* 776 */ 0x0054741FAB8BE055ull }, { /* 777 */ 0x0054584C70054585ull },
    { /* 778 */ 0x00543C8B84471316ull }, { /* 779 */ 0x005420DCD643B272ull },
    { /* 780 */ 0x0054054054054055ull }, { /* 781 */ 0x0053E9B5EBAD65F1ull },
    { /* 782 */ 0x0053CE3D8B75326Bull }, { /* 783 */ 0x0053B2D721ACF48Full },
    { /* 784 */ 0x005397829CBC14E6ull }, { /* 785 */ 0x00537C3FEB20F006ull },
    { /* 786 */ 0x0053610EFB70B12Full }, { /* 787 */ 0x005345EFBC572D37ull },
    { /* 788 */ 0x00532AE21C96BDBAull }, { /* 789 */ 0x00530FE60B081C8Eull },
    { /* 790 */ 0x0052F4FB769A3F84ull }, { /* 791 */ 0x0052DA224E52346Full },
    { /* 792 */ 0x0052BF5A814AFD6Bull }, { /* 793 */ 0x0052A4A3FEB56D71ull },
    { /* 794 */ 0x005289FEB5D80529ull }, { /* 795 */ 0x00526F6A960ED006ull },
    { /* 796 */ 0x005254E78ECB419Cull }, { /* 797 */ 0x00523A758F941346ull },
    { /* 798 */ 0x0052201488052202ull }, { /* 799 */ 0x005205C467CF4C94ull },
    { /* 800 */ 0x0051EB851EB851ECull }, { /* 801 */ 0x0051D1569C9AAFC8ull },
    { /* 802 */ 0x0051B738D1658199ull }, { /* 803 */ 0x00519D2BAD1C5FA5ull },
    { /* 804 */ 0x0051832F1FD73E69ull }, { /* 805 */ 0x0051694319C24E3Cull },
    { /* 806 */ 0x00514F678B1DDB29ull }, { /* 807 */ 0x0051359C643E2D0Cull },
    { /* 808 */ 0x00511BE1958B67ECull }, { /* 809 */ 0x005102370F816C8Aull },
    { /* 810 */ 0x0050E89CC2AFB935ull }, { /* 811 */ 0x0050CF129FB94AD0ull },
    { /* 812 */ 0x0050B59897547E1Cull }, { /* 813 */ 0x00509C2E9A4AF134ull },
    { /* 814 */ 0x005082D499796545ull }, { /* 815 */ 0x0050698A85CFA083ull },
    { /* 816 */ 0x0050505050505051ull }, { /* 817 */ 0x00503725EA10EBA2ull },
    { /* 818 */ 0x00501E0B44399599ull }, { /* 819 */ 0x0050050050050051ull },
    { /* 820 */ 0x004FEC04FEC04FEDull }, { /* 821 */ 0x004FD31941CAFDD2ull },
    { /* 822 */ 0x004FBA3D0A96BC1Cull }, { /* 823 */ 0x004FA1704AA75946ull },
    { /* 824 */ 0x004F88B2F392A40Aull }, { /* 825 */ 0x004F7004F7004F71ull },
    { /* 826 */ 0x004F576646A9D717ull }, { /* 827 */ 0x004F3ED6D45A63AEull },
    { /* 828 */ 0x004F265691EEAF9Eull }, { /* 829 */ 0x004F0DE57154EBEEull },
    { /* 830 */ 0x004EF583648CA553ull }, { /* 831 */ 0x004EDD305DA6A970ull },
    { /* 832 */ 0x004EC4EC4EC4EC4Full }, { /* 833 */ 0x004EACB72A1A6E06ull },
    { /* 834 */ 0x004E9490E1EB208Aull }, { /* 835 */ 0x004E7C79688BCDB9ull },
    { /* 836 */ 0x004E6470B061FD8Dull }, { /* 837 */ 0x004E4C76ABE3DC86ull },
    { /* 838 */ 0x004E348B4D982237ull }, { /* 839 */ 0x004E1CAE8815F812ull },
    { /* 840 */ 0x004E04E04E04E04Full }, { /* 841 */ 0x004DED20921C9D12ull },
    { /* 842 */ 0x004DD56F472517B8ull }, { /* 843 */ 0x004DBDCC5FF64847ull },
    { /* 844 */ 0x004DA637CF781D1Full }, { /* 845 */ 0x004D8EB188A262C4ull },
    { /* 846 */ 0x004D77397E7CABE1ull }, { /* 847 */ 0x004D5FCFA41E396Eull },
    { /* 848 */ 0x004D4873ECADE305ull }, { /* 849 */ 0x004D31264B61FF66ull },
    { /* 850 */ 0x004D19E6B3804D1Aull }, { /* 851 */ 0x004D02B5185DDB4Dull },
    { /* 852 */ 0x004CEB916D5EF2C8ull }, { /* 853 */ 0x004CD47BA5F6FF1Aull },
    { /* 854 */ 0x004CBD73B5A877E9ull }, { /* 855 */ 0x004CA6799004CA68ull },
    { /* 856 */ 0x004C8F8D28AC42FEull }, { /* 857 */ 0x004C78AE734DF70Aull },
    { /* 858 */ 0x004C61DD63A7AED9ull }, { /* 859 */ 0x004C4B19ED85CFB9ull },
    { /* 860 */ 0x004C346404C34641ull }, { /* 861 */ 0x004C1DBB9D4970B1ull },
    { /* 862 */ 0x004C0720AB100981ull }, { /* 863 */ 0x004BF093221D1219ull },
    { /* 864 */ 0x004BDA12F684BDA2ull }, { /* 865 */ 0x004BC3A01C695C0Bull },
    { /* 866 */ 0x004BAD3A87FB452Dull }, { /* 867 */ 0x004B96E22D78C410ull },
    { /* 868 */ 0x004B8097012E025Dull }, { /* 869 */ 0x004B6A58F774F3ECull },
    { /* 870 */ 0x004B542804B54281ull }, { /* 871 */ 0x004B3E041D64399Cull },
    { /* 872 */ 0x004B27ED3604B27Full }, { /* 873 */ 0x004B11E34327004Cull },
    { /* 874 */ 0x004AFBE63968DC44ull }, { /* 875 */ 0x004AE5F60D755237ull },
    { /* 876 */ 0x004AD012B404AD02ull }, { /* 877 */ 0x004ABA3C21DC6340ull },
    { /* 878 */ 0x004AA4724BCF0415ull }, { /* 879 */ 0x004A8EB526BC241Eull },
    { /* 880 */ 0x004A7904A7904A7Aull }, { /* 881 */ 0x004A6360C344DE01ull },
    { /* 882 */ 0x004A4DC96EE01294ull }, { /* 883 */ 0x004A383E9F74D68Bull },
    { /* 884 */ 0x004A22C04A22C04Bull }, { /* 885 */ 0x004A0D4E6415FBF4ull },
    { /* 886 */ 0x0049F7E8E2873936ull }, { /* 887 */ 0x0049E28FBABB9941ull },
    { /* 888 */ 0x0049CD42E2049CD5ull }, { /* 889 */ 0x0049B8024DC0126Full },
    { /* 890 */ 0x0049A2CDF358049Bull }, { /* 891 */ 0x00498DA5C842A85Full },
    { /* 892 */ 0x00497889C2024BC5ull }, { /* 893 */ 0x00496379D6254484ull },
    { /* 894 */ 0x00494E75FA45DEC9ull }, { /* 895 */ 0x0049397E240A4C16ull },
    { /* 896 */ 0x004924924924924Aull }, { /* 897 */ 0x00490FB25F527AB9ull },
    { /* 898 */ 0x0048FADE5C5D816Dull }, { /* 899 */ 0x0048E616361AC47Dull },
    { /* 900 */ 0x0048D159E26AF37Dull }, { /* 901 */ 0x0048BCA9573A3F14ull },
    { /* 902 */ 0x0048A8048A8048A9ull }, { /* 903 */ 0x0048936B72401225ull },
    { /* 904 */ 0x00487EDE0487EDE1ull }, { /* 905 */ 0x00486A5C37716E9Bull },
    { /* 906 */ 0x004855E601215799ull }, { /* 907 */ 0x0048417B57C78CD8ull },
    { /* 908 */ 0x00482D1C319F0363ull }, { /* 909 */ 0x004818C884EDB1B6ull },
    { /* 910 */ 0x0048048048048049ull }, { /* 911 */ 0x0047F043713F3A2Cull },
    { /* 912 */ 0x0047DC11F7047DC2ull }, { /* 913 */ 0x0047C7EBCFC5AD91ull },
    { /* 914 */ 0x0047B3D0F1FEE131ull }, { /* 915 */ 0x00479FC15436D651ull },
    { /* 916 */ 0x00478BBCECFEE1D2ull }, { /* 917 */ 0x004777C3B2F2E104ull },
    { /* 918 */ 0x004763D59CB92AF3ull }, { /* 919 */ 0x00474FF2A10281D0ull },
    { /* 920 */ 0x00473C1AB68A0474ull }, { /* 921 */ 0x0047284DD4151FF8ull },
    { /* 922 */ 0x0047148BF0738164ull }, { /* 923 */ 0x004700D5027F077Eull },
    { /* 924 */ 0x0046ED29011BB4A5ull }, { /* 925 */ 0x0046D987E337A0CCull },
    { /* 926 */ 0x0046C5F19FCAEB8Bull }, { /* 927 */ 0x0046B2662DD7AE42ull },
    { /* 928 */ 0x00469EE58469EE59ull }, { /* 929 */ 0x00468B6F9A978F92ull },
    { /* 930 */ 0x0046780467804679ull }, { /* 931 */ 0x004664A3E24D8ADDull },
    { /* 932 */ 0x0046514E02328A71ull }, { /* 933 */ 0x00463E02BE6C1B71ull },
    { /* 934 */ 0x00462AC20E40AF6Bull }, { /* 935 */ 0x0046178BE9004618ull },
    { /* 936 */ 0x0046046046046047ull }, { /* 937 */ 0x0045F13F1CAFF2E3ull },
    { /* 938 */ 0x0045DE28646F5A11ull }, { /* 939 */ 0x0045CB1C14B84C57ull },
    { /* 940 */ 0x0045B81A2509CDE4ull }, { /* 941 */ 0x0045A5228CEC23EAull },
    { /* 942 */ 0x0045923543F0C805ull }, { /* 943 */ 0x00457F5241B25BC3ull },
    { /* 944 */ 0x00456C797DD49C35ull }, { /* 945 */ 0x004559AAF004559Bull },
    { /* 946 */ 0x004546E68FF75724ull }, { /* 947 */ 0x0045342C556C66BAull },
    { /* 948 */ 0x0045217C382B34EEull }, { /* 949 */ 0x00450ED6300450EEull },
    { /* 950 */ 0x0044FC3A34D11C91ull }, { /* 951 */ 0x0044E9A83E73C079ull },
    { /* 952 */ 0x0044D72044D72045ull }, { /* 953 */ 0x0044C4A23FEECED8ull },
    { /* 954 */ 0x0044B22E27B702AFull }, { /* 955 */ 0x00449FC3F4348A53ull },
    { /* 956 */ 0x00448D639D74C0CEull }, { /* 957 */ 0x00447B0D1B8D8247ull },
    { /* 958 */ 0x004468C0669D209Aull }, { /* 959 */ 0x0044567D76CA5818ull },
    { /* 960 */ 0x0044444444444445ull }, { /* 961 */ 0x00443214C74254B7ull },
    { /* 962 */ 0x00441FEEF80441FFull }, { /* 963 */ 0x00440DD2CED202A9ull },
    { /* 964 */ 0x0043FBC043FBC044ull }, { /* 965 */ 0x0043E9B74FD9CC89ull },
    { /* 966 */ 0x0043D7B7EACC9687ull }, { /* 967 */ 0x0043C5C20D3C9FE7ull },
    { /* 968 */ 0x0043B3D5AF9A7240ull }, { /* 969 */ 0x0043A1F2CA5E947Aull },
    { /* 970 */ 0x0043901956098044ull }, { /* 971 */ 0x00437E494B239799ull },
    { /* 972 */ 0x00436C82A23D1A57ull }, { /* 973 */ 0x00435AC553EE1BE4ull },
    { /* 974 */ 0x0043491158D678E8ull }, { /* 975 */ 0x00433766A99DCD11ull },
    { /* 976 */ 0x004325C53EF368ECull }, { /* 977 */ 0x0043142D118E47CCull },
    { /* 978 */ 0x0043029E1A2D05C3ull }, { /* 979 */ 0x0042F1185195D5A4ull },
    { /* 980 */ 0x0042DF9BB096771Full }, { /* 981 */ 0x0042CE2830042CE3ull },
    { /* 982 */ 0x0042BCBDC8BBB2D6ull }, { /* 983 */ 0x0042AB5C73A13459ull },
    { /* 984 */ 0x00429A0429A0429Bull }, { /* 985 */ 0x004288B4E3ABCAFCull },
    { /* 986 */ 0x0042776E9ABE0D81ull }, { /* 987 */ 0x0042663147D89353ull },
    { /* 988 */ 0x004254FCE4042550ull }, { /* 989 */ 0x004243D16850C2A8ull },
    { /* 990 */ 0x004232AECDD59789ull }, { /* 991 */ 0x004221950DB0F3DCull },
    { /* 992 */ 0x0042108421084211ull }, { /* 993 */ 0x0041FF7C0107FDF1ull },
    { /* 994 */ 0x0041EE7CA6E3AB87ull }, { /* 995 */ 0x0041DD860BD5CE17ull },
    { /* 996 */ 0x0041CC98291FDF1Aull }, { /* 997 */ 0x0041BBB2F80A4554ull },
    { /* 998 */ 0x0041AAD671E44BEEull }, { /* 999 */ 0x00419A02900419A1ull },
    { /* 1000 */ 0x004189374BC6A7F0ull }, { /* 1001 */ 0x004178749E8FBA71ull },
    { /* 1002 */ 0x004167BA81C9D61Aull }, { /* 1003 */ 0x00415708EEE638AAull },
    { /* 1004 */ 0x0041465FDF5CD011ull }, { /* 1005 */ 0x004135BF4CAC31EEull },
    { /* 1006 */ 0x0041252730599316ull }, { /* 1007 */ 0x0041149783F0BF2Dull },
    { /* 1008 */ 0x0041041041041042ull }, { /* 1009 */ 0x0040F391612C6681ull },
    { /* 1010 */ 0x0040E31ADE091FF0ull }, { /* 1011 */ 0x0040D2ACB1401035ull },
    { /* 1012 */ 0x0040C246D47D786Aull }, { /* 1013 */ 0x0040B1E94173FEFEull },
    { /* 1014 */ 0x0040A193F1DCA7A4ull }, { /* 1015 */ 0x00409146DF76CB4Aull },
    { /* 1016 */ 0x0040810204081021ull }, { /* 1017 */ 0x004070C5595C61ABull },
    { /* 1018 */ 0x00406090D945E8DEull }, { /* 1019 */ 0x004050647D9D0446ull },
    { /* 1020 */ 0x0040404040404041ull }, { /* 1021 */ 0x004030241B144F3Cull },
    { /* 1022 */ 0x0040201008040202ull }, { /* 1023 */ 0x0040100401004011ull },
};

static const ModRatio64 mod_ratio_tbl64[kMaxModTable] = {
    { /*   0 */ 0x0000000000000000ull, 0x0000000000000000ull },
    { /*   1 */ 0x0000000000000000ull, 0x0000000000000000ull },
    { /*   2 */ 0x0000000000000000ull, 0x8000000000000000ull },
    { /*   3 */ 0x5555555555555556ull, 0x5555555555555555ull },
    { /*   4 */ 0x0000000000000000ull, 0x4000000000000000ull },
    { /*   5 */ 0x3333333333333334ull, 0x3333333333333333ull },
    { /*   6 */ 0xAAAAAAAAAAAAAAABull, 0x2AAAAAAAAAAAAAAAull },
    { /*   7 */ 0x4924924924924925ull, 0x2492492492492492ull },
    { /*   8 */ 0x0000000000000000ull, 0x2000000000000000ull },
    { /*   9 */ 0xC71C71C71C71C71Dull, 0x1C71C71C71C71C71ull },
    { /*  10 */ 0x999999999999999Aull, 0x1999999999999999ull },
    { /*  11 */ 0x745D1745D1745D18ull, 0x1745D1745D1745D1ull },
    { /*  12 */ 0x5555555555555556ull, 0x1555555555555555ull },
    { /*  13 */ 0x3B13B13B13B13B14ull, 0x13B13B13B13B13B1ull },
    { /*  14 */ 0x2492492492492493ull, 0x1249249249249249ull },
    { /*  15 */ 0x1111111111111112ull, 0x1111111111111111ull },
    { /*  16 */ 0x0000000000000000ull, 0x1000000000000000ull },
    { /*  17 */ 0x0F0F0F0F0F0F0F10ull, 0x0F0F0F0F0F0F0F0Full },
    { /*  18 */ 0xE38E38E38E38E38Full, 0x0E38E38E38E38E38ull },
    { /*  19 */ 0xE50D79435E50D795ull, 0x0D79435E50D79435ull },
    { /*  20 */ 0xCCCCCCCCCCCCCCCDull, 0x0CCCCCCCCCCCCCCCull },
    { /*  21 */ 0xC30C30C30C30C30Dull, 0x0C30C30C30C30C30ull },
    { /*  22 */ 0xBA2E8BA2E8BA2E8Cull, 0x0BA2E8BA2E8BA2E8ull },
    { /*  23 */ 0x42C8590B21642C86ull, 0x0B21642C8590B216ull },
    { /*  24 */ 0xAAAAAAAAAAAAAAABull, 0x0AAAAAAAAAAAAAAAull },
    { /*  25 */ 0xA3D70A3D70A3D70Bull, 0x0A3D70A3D70A3D70ull },
    { /*  26 */ 0x9D89D89D89D89D8Aull, 0x09D89D89D89D89D8ull },
    { /*  27 */ 0xED097B425ED097B5ull, 0x097B425ED097B425ull },
    { /*  28 */ 0x924924924924924Aull, 0x0924924924924924ull },
    { /*  29 */ 0xD3DCB08D3DCB08D4ull, 0x08D3DCB08D3DCB08ull },
    { /*  30 */ 0x8888888888888889ull, 0x0888888888888888ull },
    { /*  31 */ 0x8421084210842109ull, 0x0842108421084210ull },
    { /*  32 */ 0x0000000000000000ull, 0x0800000000000000ull },
    { /*  33 */ 0x7C1F07C1F07C1F08ull, 0x07C1F07C1F07C1F0ull },
    { /*  34 */ 0x8787878787878788ull, 0x0787878787878787ull },
    { /*  35 */ 0x7507507507507508ull, 0x0750750750750750ull },
    { /*  36 */ 0x71C71C71C71C71C8ull, 0x071C71C71C71C71Cull },
    { /*  37 */ 0x5306EB3E45306EB4ull, 0x06EB3E45306EB3E4ull },
    { /*  38 */ 0xF286BCA1AF286BCBull, 0x06BCA1AF286BCA1Aull },
    { /*  39 */ 0x6906906906906907ull, 0x0690690690690690ull },
    { /*  40 */ 0x6666666666666667ull, 0x0666666666666666ull },
    { /*  41 */ 0x63E7063E7063E707ull, 0x063E7063E7063E70ull },
    { /*  42 */ 0x6186186186186187ull, 0x0618618618618618ull },
    { /*  43 */ 0xF417D05F417D05F5ull, 0x05F417D05F417D05ull },
    { /*  44 */ 0x5D1745D1745D1746ull, 0x05D1745D1745D174ull },
    { /*  45 */ 0x5B05B05B05B05B06ull, 0x05B05B05B05B05B0ull },
    { /*  46 */ 0x21642C8590B21643ull, 0x0590B21642C8590Bull },
    { /*  47 */ 0x882B9310572620AFull, 0x0572620AE4C415C9ull },
    { /*  48 */ 0x5555555555555556ull, 0x0555555555555555ull },
    { /*  49 */ 0x0A72F05397829CBDull, 0x05397829CBC14E5Eull },
    { /*  50 */ 0x51EB851EB851EB86ull, 0x051EB851EB851EB8ull },
    { /*  51 */ 0x0505050505050506ull, 0x0505050505050505ull },
    { /*  52 */ 0x4EC4EC4EC4EC4EC5ull, 0x04EC4EC4EC4EC4ECull },
    { /*  53 */ 0x4873ECADE304D488ull, 0x04D4873ECADE304Dull },
    { /*  54 */ 0xF684BDA12F684BDBull, 0x04BDA12F684BDA12ull },
    { /*  55 */ 0x4A7904A7904A7905ull, 0x04A7904A7904A790ull },
    { /*  56 */ 0x4924924924924925ull, 0x0492492492492492ull },
    { /*  57 */ 0xF7047DC11F7047DDull, 0x047DC11F7047DC11ull },
    { /*  58 */ 0x69EE58469EE5846Aull, 0x0469EE58469EE584ull },
    { /*  59 */ 0x15B1E5F75270D046ull, 0x0456C797DD49C341ull },
    { /*  60 */ 0x4444444444444445ull, 0x0444444444444444ull },
    { /*  61 */ 0x4325C53EF368EB05ull, 0x04325C53EF368EB0ull },
    { /*  62 */ 0x4210842108421085ull, 0x0421084210842108ull },
    { /*  63 */ 0x4104104104104105ull, 0x0410410410410410ull },
    { /*  64 */ 0x0000000000000000ull, 0x0400000000000000ull },
    { /*  65 */ 0x3F03F03F03F03F04ull, 0x03F03F03F03F03F0ull },
    { /*  66 */ 0x3E0F83E0F83E0F84ull, 0x03E0F83E0F83E0F8ull },
    { /*  67 */ 0x40F4898D5F85BB3Aull, 0x03D226357E16ECE5ull },
    { /*  68 */ 0xC3C3C3C3C3C3C3C4ull, 0x03C3C3C3C3C3C3C3ull },
    { /*  69 */ 0xC0ED7303B5CC0ED8ull, 0x03B5CC0ED7303B5Cull },
    { /*  70 */ 0x3A83A83A83A83A84ull, 0x03A83A83A83A83A8ull },
    { /*  71 */ 0x240E6C2B4481CD86ull, 0x039B0AD12073615Aull },
    { /*  72 */ 0x38E38E38E38E38E4ull, 0x038E38E38E38E38Eull },
    { /*  73 */ 0x070381C0E070381Dull, 0x0381C0E070381C0Eull },
    { /*  74 */ 0x2983759F2298375Aull, 0x03759F22983759F2ull },
    { /*  75 */ 0x369D0369D0369D04ull, 0x0369D0369D0369D0ull },
    { /*  76 */ 0x79435E50D79435E6ull, 0x035E50D79435E50Dull },
    { /*  77 */ 0x3531DEC0D4C77B04ull, 0x03531DEC0D4C77B0ull },
    { /*  78 */ 0x3483483483483484ull, 0x0348348348348348ull },
    { /*  79 */ 0xA5440CF6474A881Aull, 0x033D91D2A2067B23ull },
    { /*  80 */ 0x3333333333333334ull, 0x0333333333333333ull },
    { /*  81 */ 0xA4587E6B74F03292ull, 0x0329161F9ADD3C0Cull },
    { /*  82 */ 0x31F3831F3831F384ull, 0x031F3831F3831F38ull },
    { /*  83 */ 0x6F0940C565C87B60ull, 0x03159721ED7E7534ull },
    { /*  84 */ 0x30C30C30C30C30C4ull, 0x030C30C30C30C30Cull },
    { /*  85 */ 0x0303030303030304ull, 0x0303030303030303ull },
    { /*  86 */ 0xFA0BE82FA0BE82FBull, 0x02FA0BE82FA0BE82ull },
    { /*  87 */ 0xF149902F149902F2ull, 0x02F149902F149902ull },
    { /*  88 */ 0x2E8BA2E8BA2E8BA3ull, 0x02E8BA2E8BA2E8BAull },
    { /*  89 */ 0xC0B81702E05C0B82ull, 0x02E05C0B81702E05ull },
    { /*  90 */ 0x2D82D82D82D82D83ull, 0x02D82D82D82D82D8ull },
    { /*  91 */ 0x2D02D02D02D02D03ull, 0x02D02D02D02D02D0ull },
    { /*  92 */ 0x90B21642C8590B22ull, 0x02C8590B21642C85ull },
    { /*  93 */ 0x2C0B02C0B02C0B03ull, 0x02C0B02C0B02C0B0ull },
    { /*  94 */ 0xC415C9882B931058ull, 0x02B9310572620AE4ull },
    { /*  95 */ 0x6102B1DA46102B1Eull, 0x02B1DA46102B1DA4ull },
    { /*  96 */ 0xAAAAAAAAAAAAAAABull, 0x02AAAAAAAAAAAAAAull },
    { /*  97 */ 0xA0FD5C5F02A3A0FEull, 0x02A3A0FD5C5F02A3ull },
    { /*  98 */ 0x05397829CBC14E5Full, 0x029CBC14E5E0A72Full },
    { /*  99 */ 0x295FAD40A57EB503ull, 0x0295FAD40A57EB50ull },
    { /* 100 */ 0x28F5C28F5C28F5C3ull, 0x028F5C28F5C28F5Cull },
    { /* 101 */ 0xC83CD4E930288DF1ull, 0x0288DF0CAC5B3F5Dull },
    { /* 102 */ 0x8282828282828283ull, 0x0282828282828282ull },
    { /* 103 */ 0x88B2F392A409F117ull, 0x027C45979C95204Full },
    { /* 104 */ 0x2762762762762763ull, 0x0276276276276276ull },
    { /* 105 */ 0x2702702702702703ull, 0x0270270270270270ull },
    { /* 106 */ 0xA439F656F1826A44ull, 0x026A439F656F1826ull },
    { /* 107 */ 0xDC1CB5D4EF409920ull, 0x02647C69456217ECull },
    { /* 108 */ 0x7B425ED097B425EEull, 0x025ED097B425ED09ull },
    { /* 109 */ 0x9B02593F69B02594ull, 0x02593F69B02593F6ull },
    { /* 110 */ 0x253C8253C8253C83ull, 0x0253C8253C8253C8ull },
    { /* 111 */ 0x71024E6A171024E7ull, 0x024E6A171024E6A1ull },
    { /* 112 */ 0x2492492492492493ull, 0x0249249249249249ull },
    { /* 113 */ 0x43F6F0243F6F0244ull, 0x0243F6F0243F6F02ull },
    { /* 114 */ 0xFB823EE08FB823EFull, 0x023EE08FB823EE08ull },
    { /* 115 */ 0x0D5B450239E0D5B5ull, 0x0239E0D5B450239Eull },
    { /* 116 */ 0x34F72C234F72C235ull, 0x0234F72C234F72C2ull },
    { /* 117 */ 0x2302302302302303ull, 0x0230230230230230ull },
    { /* 118 */ 0x8AD8F2FBA9386823ull, 0x022B63CBEEA4E1A0ull },
    { /* 119 */ 0xB90226B90226B903ull, 0x0226B90226B90226ull },
    { /* 120 */ 0x2222222222222223ull, 0x0222222222222222ull },
    { /* 121 */ 0xC4C2A50658DC0877ull, 0x021D9EAD7CD391FBull },
    { /* 122 */ 0x2192E29F79B47583ull, 0x02192E29F79B4758ull },
    { /* 123 */ 0x214D0214D0214D03ull, 0x0214D0214D0214D0ull },
    { /* 124 */ 0x2108421084210843ull, 0x0210842108421084ull },
    { /* 125 */ 0xED916872B020C49Cull, 0x020C49BA5E353F7Cull },
    { /* 126 */ 0x2082082082082083ull, 0x0208208208208208ull },
    { /* 127 */ 0x0408102040810205ull, 0x0204081020408102ull },
    { /* 128 */ 0x0000000000000000ull, 0x0200000000000000ull },
    { /* 129 */ 0xFC07F01FC07F01FDull, 0x01FC07F01FC07F01ull },
    { /* 130 */ 0x1F81F81F81F81F82ull, 0x01F81F81F81F81F8ull },
    { /* 131 */ 0x7F05DCD30DADEC76ull, 0x01F44659E4A42715ull },
    { /* 132 */ 0x1F07C1F07C1F07C2ull, 0x01F07C1F07C1F07Cull },
    { /* 133 */ 0xB301ECC07B301ECDull, 0x01ECC07B301ECC07ull },
    { /* 134 */ 0xA07A44C6AFC2DD9Dull, 0x01E9131ABF0B7672ull },
    { /* 135 */ 0xC901E573AC901E58ull, 0x01E573AC901E573Aull },
    { /* 136 */ 0xE1E1E1E1E1E1E1E2ull, 0x01E1E1E1E1E1E1E1ull },
    { /* 137 */ 0x701DE5D6E3F8868Bull, 0x01DE5D6E3F8868A4ull },
    { /* 138 */ 0x6076B981DAE6076Cull, 0x01DAE6076B981DAEull },
    { /* 139 */ 0x17F14424D5A3E9E7ull, 0x01D77B654B82C339ull },
    { /* 140 */ 0x1D41D41D41D41D42ull, 0x01D41D41D41D41D4ull },
    { /* 141 */ 0x2D63DBB01D0CB590ull, 0x01D0CB58F6EC0743ull },
    { /* 142 */ 0x12073615A240E6C3ull, 0x01CD85689039B0ADull },
    { /* 143 */ 0x1CA4B3055EE19102ull, 0x01CA4B3055EE1910ull },
    { /* 144 */ 0x1C71C71C71C71C72ull, 0x01C71C71C71C71C7ull },
    { /* 145 */ 0xC3F8F01C3F8F01C4ull, 0x01C3F8F01C3F8F01ull },
    { /* 146 */ 0x0381C0E070381C0Full, 0x01C0E070381C0E07ull },
    { /* 147 */ 0xAE26501BDD2B8995ull, 0x01BDD2B899406F74ull },
    { /* 148 */ 0x14C1BACF914C1BADull, 0x01BACF914C1BACF9ull },
    { /* 149 */ 0xAF3F920A4F089732ull, 0x01B7D6C3DDA338B2ull },
    { /* 150 */ 0x1B4E81B4E81B4E82ull, 0x01B4E81B4E81B4E8ull },
    { /* 151 */ 0x1B2036406C80D902ull, 0x01B2036406C80D90ull },
    { /* 152 */ 0xBCA1AF286BCA1AF3ull, 0x01AF286BCA1AF286ull },
    { /* 153 */ 0x5701AC5701AC5702ull, 0x01AC5701AC5701ACull },
    { /* 154 */ 0x1A98EF606A63BD82ull, 0x01A98EF606A63BD8ull },
    { /* 155 */ 0x1A6D01A6D01A6D02ull, 0x01A6D01A6D01A6D0ull },
    { /* 156 */ 0x1A41A41A41A41A42ull, 0x01A41A41A41A41A4ull },
    { /* 157 */ 0x16D3F97A4B01A16Eull, 0x01A16D3F97A4B01Aull },
    { /* 158 */ 0xD2A2067B23A5440Dull, 0x019EC8E951033D91ull },
    { /* 159 */ 0xC2D14EE4A1019C2Eull, 0x019C2D14EE4A1019ull },
    { /* 160 */ 0x999999999999999Aull, 0x0199999999999999ull },
    { /* 161 */ 0xC065C393E032E1CAull, 0x01970E4F80CB8727ull },
    { /* 162 */ 0x522C3F35BA781949ull, 0x01948B0FCD6E9E06ull },
    { /* 163 */ 0x59857F36F825B179ull, 0x01920FB49D0E228Dull },
    { /* 164 */ 0x18F9C18F9C18F9C2ull, 0x018F9C18F9C18F9Cull },
    { /* 165 */ 0x18D3018D3018D302ull, 0x018D3018D3018D30ull },
    { /* 166 */ 0x3784A062B2E43DB0ull, 0x018ACB90F6BF3A9Aull },
    { /* 167 */ 0x4B1D20310DCBE158ull, 0x01886E5F0ABB0499ull },
    { /* 168 */ 0x1861861861861862ull, 0x0186186186186186ull },
    { /* 169 */ 0x8E63F9F0DA215351ull, 0x0183C977AB2BEDD2ull },
    { /* 170 */ 0x8181818181818182ull, 0x0181818181818181ull },
    { /* 171 */ 0xFD017F405FD017F5ull, 0x017F405FD017F405ull },
    { /* 172 */ 0x7D05F417D05F417Eull, 0x017D05F417D05F41ull },
    { /* 173 */ 0x458C93FA14B77DC8ull, 0x017AD2208E0ECC35ull },
    { /* 174 */ 0x78A4C8178A4C8179ull, 0x0178A4C8178A4C81ull },
    { /* 175 */ 0x1767DCE434A9B102ull, 0x01767DCE434A9B10ull },
    { /* 176 */ 0x1745D1745D1745D2ull, 0x01745D1745D1745Dull },
    { /* 177 */ 0x5C90A1FD1B7AF018ull, 0x01724287F46DEBC0ull },
    { /* 178 */ 0xE05C0B81702E05C1ull, 0x01702E05C0B81702ull },
    { /* 179 */ 0xB1573D7F48F044A6ull, 0x016E1F76B4337C6Cull },
    { /* 180 */ 0x16C16C16C16C16C2ull, 0x016C16C16C16C16Cull },
    { /* 181 */ 0x3E3B673FA57B0CBBull, 0x016A13CD15372904ull },
    { /* 182 */ 0x1681681681681682ull, 0x0168168168168168ull },
    { /* 183 */ 0x1661EC6A5122F902ull, 0x01661EC6A5122F90ull },
    { /* 184 */ 0xC8590B21642C8591ull, 0x01642C8590B21642ull },
    { /* 185 */ 0x7701623FA7701624ull, 0x01623FA7701623FAull },
    { /* 186 */ 0x1605816058160582ull, 0x0160581605816058ull },
    { /* 187 */ 0xBB8D015E75BB8D02ull, 0x015E75BB8D015E75ull },
    { /* 188 */ 0x620AE4C415C9882Cull, 0x015C9882B9310572ull },
    { /* 189 */ 0x6B015AC056B015ADull, 0x015AC056B015AC05ull },
    { /* 190 */ 0x308158ED2308158Full, 0x0158ED2308158ED2ull },
    { /* 191 */ 0x22D9218202AE3DA8ull, 0x01571ED3C506B39Aull },
    { /* 192 */ 0x5555555555555556ull, 0x0155555555555555ull },
    { /* 193 */ 0x6F6B70BF01539095ull, 0x015390948F40FEACull },
    { /* 194 */ 0xD07EAE2F8151D07Full, 0x0151D07EAE2F8151ull },
    { /* 195 */ 0x1501501501501502ull, 0x0150150150150150ull },
    { /* 196 */ 0x829CBC14E5E0A730ull, 0x014E5E0A72F05397ull },
    { /* 197 */ 0x4F44DF833FACD51Eull, 0x014CAB88725AF6E7ull },
    { /* 198 */ 0x14AFD6A052BF5A82ull, 0x014AFD6A052BF5A8ull },
    { /* 199 */ 0xA21727E120292A74ull, 0x0149539E3B2D066Eull },
    { /* 200 */ 0x147AE147AE147AE2ull, 0x0147AE147AE147AEull },
    { /* 201 */ 0xC051832F1FD73E69ull, 0x01460CBC7F5CF9A1ull },
    { /* 202 */ 0xE41E6A74981446F9ull, 0x01446F86562D9FAEull },
    { /* 203 */ 0xF9B1D0142D6625D6ull, 0x0142D6625D51F86Eull },
    { /* 204 */ 0x4141414141414142ull, 0x0141414141414141ull },
    { /* 205 */ 0x13FB013FB013FB02ull, 0x013FB013FB013FB0ull },
    { /* 206 */ 0xC45979C95204F88Cull, 0x013E22CBCE4A9027ull },
    { /* 207 */ 0x404F265691EEAF9Eull, 0x013C995A47BABE74ull },
    { /* 208 */ 0x13B13B13B13B13B2ull, 0x013B13B13B13B13Bull },
    { /* 209 */ 0x71E9F3C04E6470B1ull, 0x013991C2C187F633ull },
    { /* 210 */ 0x1381381381381382ull, 0x0138138138138138ull },
    { /* 211 */ 0x53B7342BAD7F64B4ull, 0x013698DF3DE07479ull },
    { /* 212 */ 0x521CFB2B78C13522ull, 0x013521CFB2B78C13ull },
    { /* 213 */ 0x0C04CEB916D5EF2Dull, 0x0133AE45B57BCB1Eull },
    { /* 214 */ 0x6E0E5AEA77A04C90ull, 0x01323E34A2B10BF6ull },
    { /* 215 */ 0x30D190130D190131ull, 0x0130D190130D1901ull },
    { /* 216 */ 0xBDA12F684BDA12F7ull, 0x012F684BDA12F684ull },
    { /* 217 */ 0x12E025C04B809702ull, 0x012E025C04B80970ull },
    { /* 218 */ 0x4D812C9FB4D812CAull, 0x012C9FB4D812C9FBull },
    { /* 219 */ 0xAD012B404AD012B5ull, 0x012B404AD012B404ull },
    { /* 220 */ 0x129E4129E4129E42ull, 0x0129E4129E4129E4ull },
    { /* 221 */ 0x8B01288B01288B02ull, 0x01288B01288B0128ull },
    { /* 222 */ 0xB88127350B881274ull, 0x0127350B88127350ull },
    { /* 223 */ 0x3840497889C2024Cull, 0x0125E22708092F11ull },
    { /* 224 */ 0x924924924924924Aull, 0x0124924924924924ull },
    { /* 225 */ 0x123456789ABCDF02ull, 0x0123456789ABCDF0ull },
    { /* 226 */ 0x21FB78121FB78122ull, 0x0121FB78121FB781ull },
    { /* 227 */ 0x75494DD0A2657F70ull, 0x0120B470C67C0D88ull },
    { /* 228 */ 0x7DC11F7047DC11F8ull, 0x011F7047DC11F704ull },
    { /* 229 */ 0x313011E2EF3B3FB9ull, 0x011E2EF3B3FB8744ull },
    { /* 230 */ 0x06ADA2811CF06ADBull, 0x011CF06ADA2811CFull },
    { /* 231 */ 0x11BB4A4046ED2902ull, 0x011BB4A4046ED290ull },
    { /* 232 */ 0x1A7B9611A7B9611Bull, 0x011A7B9611A7B961ull },
    { /* 233 */ 0x46514E02328A7012ull, 0x0119453808CA29C0ull },
    { /* 234 */ 0x1181181181181182ull, 0x0118118118118118ull },
    { /* 235 */ 0xB4D583D0116E068Aull, 0x0116E0689427378Eull },
    { /* 236 */ 0x456C797DD49C3412ull, 0x0115B1E5F75270D0ull },
    { /* 237 */ 0x8C6C045217C382B4ull, 0x011485F0E0ACD3B6ull },
    { /* 238 */ 0x5C81135C81135C82ull, 0x01135C81135C8113ull },
    { /* 239 */ 0xA0AB617909A3E203ull, 0x0112358E75D30336ull },
    { /* 240 */ 0x1111111111111112ull, 0x0111111111111111ull },
    { /* 241 */ 0xEF010FEF010FEF02ull, 0x010FEF010FEF010Full },
    { /* 242 */ 0xE26152832C6E043Cull, 0x010ECF56BE69C8FDull },
    { /* 243 */ 0x8C1D7F7926FABB86ull, 0x010DB20A88F46959ull },
    { /* 244 */ 0x10C9714FBCDA3AC2ull, 0x010C9714FBCDA3ACull },
    { /* 245 */ 0x354A3010B7E6EC26ull, 0x010B7E6EC259DC79ull },
    { /* 246 */ 0x10A6810A6810A682ull, 0x010A6810A6810A68ull },
    { /* 247 */ 0x39010953F3901096ull, 0x010953F39010953Full },
    { /* 248 */ 0x1084210842108422ull, 0x0108421084210842ull },
    { /* 249 */ 0xCFADC041CC982920ull, 0x01073260A47F7C66ull },
    { /* 250 */ 0x76C8B4395810624Eull, 0x010624DD2F1A9FBEull },
    { /* 251 */ 0x465FDF5CD0105198ull, 0x0105197F7D734041ull },
    { /* 252 */ 0x1041041041041042ull, 0x0104104104104104ull },
    { /* 253 */ 0xEECC652F8EAC040Dull, 0x0103091B51F5E1A4ull },
    { /* 254 */ 0x0204081020408103ull, 0x0102040810204081ull },
    { /* 255 */ 0x0101010101010102ull, 0x0101010101010101ull },
    { /* 256 */ 0x0000000000000000ull, 0x0100000000000000ull },
    { /* 257 */ 0x00FF00FF00FF0100ull, 0x00FF00FF00FF00FFull },
    { /* 258 */ 0xFE03F80FE03F80FFull, 0x00FE03F80FE03F80ull },
    { /* 259 */ 0x5500FD08E5500FD1ull, 0x00FD08E5500FD08Eull },
    { /* 260 */ 0x0FC0FC0FC0FC0FC1ull, 0x00FC0FC0FC0FC0FCull },
    { /* 261 */ 0xA5C3300FB1885651ull, 0x00FB18856506DDABull },
    { /* 262 */ 0xBF82EE6986D6F63Bull, 0x00FA232CF252138Aull },
    { /* 263 */ 0x653B605D71E2CC6Aull, 0x00F92FB2211855A8ull },
    { /* 264 */ 0x0F83E0F83E0F83E1ull, 0x00F83E0F83E0F83Eull },
    { /* 265 */ 0x74E3FC22C700F74Full, 0x00F74E3FC22C700Full },
    { /* 266 */ 0xD980F6603D980F67ull, 0x00F6603D980F6603ull },
    { /* 267 */ 0x403D5D00F57403D6ull, 0x00F57403D5D00F57ull },
    { /* 268 */ 0x503D226357E16ECFull, 0x00F4898D5F85BB39ull },
    { /* 269 */ 0x363ECF76F58816D8ull, 0x00F3A0D52CBA8723ull },
    { /* 270 */ 0x6480F2B9D6480F2Cull, 0x00F2B9D6480F2B9Dull },
    { /* 271 */ 0xFA5504B926BB0A65ull, 0x00F1D48BCEE0D399ull },
    { /* 272 */ 0xF0F0F0F0F0F0F0F1ull, 0x00F0F0F0F0F0F0F0ull },
    { /* 273 */ 0x0F00F00F00F00F01ull, 0x00F00F00F00F00F0ull },
    { /* 274 */ 0x380EF2EB71FC4346ull, 0x00EF2EB71FC43452ull },
    { /* 275 */ 0x0EE500EE500EE501ull, 0x00EE500EE500EE50ull },
    { /* 276 */ 0x303B5CC0ED7303B6ull, 0x00ED7303B5CC0ED7ull },
    { /* 277 */ 0xA1BB9C300EC97912ull, 0x00EC979118F3FC4Dull },
    { /* 278 */ 0x8BF8A2126AD1F4F4ull, 0x00EBBDB2A5C1619Cull },
    { /* 279 */ 0x0EAE56403AB95901ull, 0x00EAE56403AB9590ull },
    { /* 280 */ 0x0EA0EA0EA0EA0EA1ull, 0x00EA0EA0EA0EA0EAull },
    { /* 281 */ 0x5C03A4E5947F8B64ull, 0x00E939651FE2D8D3ull },
    { /* 282 */ 0x96B1EDD80E865AC8ull, 0x00E865AC7B7603A1ull },
    { /* 283 */ 0xD91A3BB4039E4DCCull, 0x00E79372E225FE30ull },
    { /* 284 */ 0x89039B0AD1207362ull, 0x00E6C2B4481CD856ull },
    { /* 285 */ 0xCB00E5F36CB00E60ull, 0x00E5F36CB00E5F36ull },
    { /* 286 */ 0x0E525982AF70C881ull, 0x00E525982AF70C88ull },
    { /* 287 */ 0x0E45932D7DC52101ull, 0x00E45932D7DC5210ull },
    { /* 288 */ 0x8E38E38E38E38E39ull, 0x00E38E38E38E38E3ull },
    { /* 289 */ 0x0FF1D3B597795B3Eull, 0x00E2C4A6886A4C2Eull },
    { /* 290 */ 0xE1FC780E1FC780E2ull, 0x00E1FC780E1FC780ull },
    { /* 291 */ 0x35A9C97500E135AAull, 0x00E135A9C97500E1ull },
    { /* 292 */ 0x81C0E070381C0E08ull, 0x00E070381C0E0703ull },
    { /* 293 */ 0x5F3C49647A522134ull, 0x00DFAC1F74346C57ull },
    { /* 294 */ 0x5713280DEE95C4CBull, 0x00DEE95C4CA037BAull },
    { /* 295 */ 0xD1239464AA16900Eull, 0x00DE27EB2C41F3D9ull },
    { /* 296 */ 0x8A60DD67C8A60DD7ull, 0x00DD67C8A60DD67Cull },
    { /* 297 */ 0xB87539C0372A3C57ull, 0x00DCA8F158C7F91Aull },
    { /* 298 */ 0x579FC90527844B99ull, 0x00DBEB61EED19C59ull },
    { /* 299 */ 0x18D4559E6507B4A8ull, 0x00DB2F171DF77029ull },
    { /* 300 */ 0x0DA740DA740DA741ull, 0x00DA740DA740DA74ull },
    { /* 301 */ 0x9095B00D9BA4256Dull, 0x00D9BA4256C0366Eull },
    { /* 302 */ 0x0D901B2036406C81ull, 0x00D901B2036406C8ull },
    { /* 303 */ 0x42BEF1A3100D84A6ull, 0x00D84A598EC9151Full },
    { /* 304 */ 0x5E50D79435E50D7Aull, 0x00D79435E50D7943ull },
    { /* 305 */ 0x0D6DF43FCA482F01ull, 0x00D6DF43FCA482F0ull },
    { /* 306 */ 0x2B80D62B80D62B81ull, 0x00D62B80D62B80D6ull },
    { /* 307 */ 0x50E2D078140355E4ull, 0x00D578E97C3F5FE5ull },
    { /* 308 */ 0x0D4C77B03531DEC1ull, 0x00D4C77B03531DECull },
    { /* 309 */ 0x2D90FBDB8C03505Dull, 0x00D4173289870AC5ull },
    { /* 310 */ 0x0D3680D3680D3681ull, 0x00D3680D3680D368ull },
    { /* 311 */ 0xAB3726B02782E18Cull, 0x00D2BA083B445250ull },
    { /* 312 */ 0x0D20D20D20D20D21ull, 0x00D20D20D20D20D2ull },
    { /* 313 */ 0x7423FCBA7AAF075Dull, 0x00D161543E28E502ull },
    { /* 314 */ 0x0B69FCBD2580D0B7ull, 0x00D0B69FCBD2580Dull },
    { /* 315 */ 0x0D00D00D00D00D01ull, 0x00D00D00D00D00D0ull },
    { /* 316 */ 0xE951033D91D2A207ull, 0x00CF6474A8819EC8ull },
    { /* 317 */ 0xCAB347DFB27922BAull, 0x00CEBCF8BB5B4169ull },
    { /* 318 */ 0xE168A7725080CE17ull, 0x00CE168A7725080Cull },
    { /* 319 */ 0x41CE3E9879FB2F5Aull, 0x00CD712752A886D2ull },
    { /* 320 */ 0xCCCCCCCCCCCCCCCDull, 0x00CCCCCCCCCCCCCCull },
    { /* 321 */ 0x9EB43C9C4FC0330Bull, 0x00CC29786C7607F9ull },
    { /* 322 */ 0xE032E1C9F01970E5ull, 0x00CB8727C065C393ull },
    { /* 323 */ 0x9500CAE5D85F1BBEull, 0x00CAE5D85F1BBD6Cull },
    { /* 324 */ 0x29161F9ADD3C0CA5ull, 0x00CA4587E6B74F03ull },
    { /* 325 */ 0x0C9A633FCD967301ull, 0x00C9A633FCD96730ull },
    { /* 326 */ 0xACC2BF9B7C12D8BDull, 0x00C907DA4E871146ull },
    { /* 327 */ 0x8900C86A78900C87ull, 0x00C86A78900C86A7ull },
    { /* 328 */ 0x0C7CE0C7CE0C7CE1ull, 0x00C7CE0C7CE0C7CEull },
    { /* 329 */ 0x380639949EBC4DD0ull, 0x00C73293D789B9F8ull },
    { /* 330 */ 0x0C6980C6980C6981ull, 0x00C6980C6980C698ull },
    { /* 331 */ 0x0C5FE740317F9D01ull, 0x00C5FE740317F9D0ull },
    { /* 332 */ 0x1BC2503159721ED8ull, 0x00C565C87B5F9D4Dull },
    { /* 333 */ 0x7B00C4CE07B00C4Dull, 0x00C4CE07B00C4CE0ull },
    { /* 334 */ 0xA58E901886E5F0ACull, 0x00C4372F855D824Cull },
    { /* 335 */ 0x73641B82ACB458A6ull, 0x00C3A13DE60495C7ull },
    { /* 336 */ 0x0C30C30C30C30C31ull, 0x00C30C30C30C30C3ull },
    { /* 337 */ 0x0184F00C2780613Dull, 0x00C2780613C0309Eull },
    { /* 338 */ 0x4731FCF86D10A9A9ull, 0x00C1E4BBD595F6E9ull },
    { /* 339 */ 0xC152500C152500C2ull, 0x00C152500C152500ull },
    { /* 340 */ 0xC0C0C0C0C0C0C0C1ull, 0x00C0C0C0C0C0C0C0ull },
    { /* 341 */ 0x0C0300C0300C0301ull, 0x00C0300C0300C030ull },
    { /* 342 */ 0xFE80BFA02FE80BFBull, 0x00BFA02FE80BFA02ull },
    { /* 343 */ 0xDCEBD930835BCD40ull, 0x00BF112A8AD278E8ull },
    { /* 344 */ 0xBE82FA0BE82FA0BFull, 0x00BE82FA0BE82FA0ull },
    { /* 345 */ 0x59C91700BDF59C92ull, 0x00BDF59C91700BDFull },
    { /* 346 */ 0xA2C649FD0A5BBEE4ull, 0x00BD69104707661Aull },
    { /* 347 */ 0x7B3461621EFC4FAEull, 0x00BCDD535DB1CC5Bull },
    { /* 348 */ 0xBC52640BC52640BDull, 0x00BC52640BC52640ull },
    { /* 349 */ 0xA0A44F387B3B6A5Dull, 0x00BBC8408CD63069ull },
    { /* 350 */ 0x0BB3EE721A54D881ull, 0x00BB3EE721A54D88ull },
    { /* 351 */ 0x6100BAB656100BACull, 0x00BAB656100BAB65ull },
    { /* 352 */ 0x8BA2E8BA2E8BA2E9ull, 0x00BA2E8BA2E8BA2Eull },
    { /* 353 */ 0x879D5F00B9A7862Bull, 0x00B9A7862A0FF465ull },
    { /* 354 */ 0x2E4850FE8DBD780Cull, 0x00B92143FA36F5E0ull },
    { /* 355 */ 0x3A6948D57419F5E8ull, 0x00B89BC36CE3E045ull },
    { /* 356 */ 0x702E05C0B81702E1ull, 0x00B81702E05C0B81ull },
    { /* 357 */ 0x9300B79300B79301ull, 0x00B79300B79300B7ull },
    { /* 358 */ 0x58AB9EBFA4782253ull, 0x00B70FBB5A19BE36ull },
    { /* 359 */ 0xD8111D3C9CE15649ull, 0x00B68D31340E4307ull },
    { /* 360 */ 0x0B60B60B60B60B61ull, 0x00B60B60B60B60B6ull },
    { /* 361 */ 0xE3A264B2B41F33C5ull, 0x00B58A485518D1E7ull },
    { /* 362 */ 0x1F1DB39FD2BD865Eull, 0x00B509E68A9B9482ull },
    { /* 363 */ 0x96EB8C5772F402D3ull, 0x00B48A39D44685FEull },
    { /* 364 */ 0x0B40B40B40B40B41ull, 0x00B40B40B40B40B4ull },
    { /* 365 */ 0x9B00B38CF9B00B39ull, 0x00B38CF9B00B38CFull },
    { /* 366 */ 0x0B30F63528917C81ull, 0x00B30F63528917C8ull },
    { /* 367 */ 0xCF2BF20C8E4CBAF2ull, 0x00B2927C29DA5519ull },
    { /* 368 */ 0x642C8590B21642C9ull, 0x00B21642C8590B21ull },
    { /* 369 */ 0x0B19AB5C45606F01ull, 0x00B19AB5C45606F0ull },
    { /* 370 */ 0x3B80B11FD3B80B12ull, 0x00B11FD3B80B11FDull },
    { /* 371 */ 0x537E4661FBDC1E5Dull, 0x00B0A59B418D749Dull },
    { /* 372 */ 0x0B02C0B02C0B02C1ull, 0x00B02C0B02C0B02Cull },
    { /* 373 */ 0x0E69B1C23B062D4Dull, 0x00AFB321A1496FDFull },
    { /* 374 */ 0xDDC680AF3ADDC681ull, 0x00AF3ADDC680AF3Aull },
    { /* 375 */ 0xA485CD7B900AEC34ull, 0x00AEC33E1F671529ull },
    { /* 376 */ 0x310572620AE4C416ull, 0x00AE4C415C9882B9ull },
    { /* 377 */ 0x8673700ADD5E6324ull, 0x00ADD5E6323FD48Aull },
    { /* 378 */ 0xB580AD602B580AD7ull, 0x00AD602B580AD602ull },
    { /* 379 */ 0xBB1A57CF5DE3A170ull, 0x00ACEB0F891E6551ull },
    { /* 380 */ 0x1840AC7691840AC8ull, 0x00AC7691840AC769ull },
    { /* 381 */ 0xAC02B00AC02B00ADull, 0x00AC02B00AC02B00ull },
    { /* 382 */ 0x116C90C101571ED4ull, 0x00AB8F69E28359CDull },
    { /* 383 */ 0x5F950E095B926197ull, 0x00AB1CBDD3E2970Full },
    { /* 384 */ 0xAAAAAAAAAAAAAAABull, 0x00AAAAAAAAAAAAAAull },
    { /* 385 */ 0x0AA392F35DC17F01ull, 0x00AA392F35DC17F0ull },
    { /* 386 */ 0x37B5B85F80A9C84Bull, 0x00A9C84A47A07F56ull },
    { /* 387 */ 0xFEAD500A957FAB55ull, 0x00A957FAB5402A55ull },
    { /* 388 */ 0xE83F5717C0A8E840ull, 0x00A8E83F5717C0A8ull },
    { /* 389 */ 0x6F37F034A5D732ADull, 0x00A87917088E262Bull },
    { /* 390 */ 0x0A80A80A80A80A81ull, 0x00A80A80A80A80A8ull },
    { /* 391 */ 0x220BC900A79C7B17ull, 0x00A79C7B16EA64D4ull },
    { /* 392 */ 0xC14E5E0A72F05398ull, 0x00A72F05397829CBull },
    { /* 393 */ 0x7FAC9EF1048F4ED2ull, 0x00A6C21DF6E1625Cull },
    { /* 394 */ 0xA7A26FC19FD66A8Full, 0x00A655C4392D7B73ull },
    { /* 395 */ 0x210D9C3141754E6Cull, 0x00A5E9F6ED347F07ull },
    { /* 396 */ 0x0A57EB50295FAD41ull, 0x00A57EB50295FAD4ull },
    { /* 397 */ 0x3FD6BB00A513FD6Cull, 0x00A513FD6BB00A51ull },
    { /* 398 */ 0x510B93F09014953Aull, 0x00A4A9CF1D968337ull },
    { /* 399 */ 0x9100A44029100A45ull, 0x00A44029100A4402ull },
    { /* 400 */ 0x0A3D70A3D70A3D71ull, 0x00A3D70A3D70A3D7ull },
    { /* 401 */ 0x28382DF70FF5C919ull, 0x00A36E71A2CB0331ull },
    { /* 402 */ 0xE028C1978FEB9F35ull, 0x00A3065E3FAE7CD0ull },
    { /* 403 */ 0x0A29ECF163BB6501ull, 0x00A29ECF163BB650ull },
    { /* 404 */ 0x720F353A4C0A237Dull, 0x00A237C32B16CFD7ull },
    { /* 405 */ 0xEDAB4C7BE4300A1Eull, 0x00A1D139855F7268ull },
    { /* 406 */ 0x7CD8E80A16B312EBull, 0x00A16B312EA8FC37ull },
    { /* 407 */ 0x1ED21562C078C43Full, 0x00A105A932F2CA89ull },
    { /* 408 */ 0xA0A0A0A0A0A0A0A1ull, 0x00A0A0A0A0A0A0A0ull },
    { /* 409 */ 0x3212C70AA3FD7F10ull, 0x00A03C1688732B30ull },
    { /* 410 */ 0x09FD809FD809FD81ull, 0x009FD809FD809FD8ull },
    { /* 411 */ 0xD009F747A152D784ull, 0x009F747A152D7836ull },
    { /* 412 */ 0xE22CBCE4A9027C46ull, 0x009F1165E7254813ull },
    { /* 413 */ 0xDE8720DA30594254ull, 0x009EAECC8D53AE2Dull },
    { /* 414 */ 0x2027932B48F757CFull, 0x009E4CAD23DD5F3Aull },
    { /* 415 */ 0x16350CF4478E7F14ull, 0x009DEB06C9194AA4ull },
    { /* 416 */ 0x89D89D89D89D89D9ull, 0x009D89D89D89D89Dull },
    { /* 417 */ 0x07FB16B6F1E14DF8ull, 0x009D2921C3D64113ull },
    { /* 418 */ 0xB8F4F9E027323859ull, 0x009CC8E160C3FB19ull },
    { /* 419 */ 0xF9E3E51DF01D53B5ull, 0x009C69169B30446Dull },
    { /* 420 */ 0x09C09C09C09C09C1ull, 0x009C09C09C09C09Cull },
    { /* 421 */ 0x0FCF5A9A7388D12Eull, 0x009BAADE8E4A2F6Eull },
    { /* 422 */ 0xA9DB9A15D6BFB25Aull, 0x009B4C6F9EF03A3Cull },
    { /* 423 */ 0x0F21493AB45991DBull, 0x009AEE72FCF957C1ull },
    { /* 424 */ 0xA90E7D95BC609A91ull, 0x009A90E7D95BC609ull },
    { /* 425 */ 0xCD67009A33CD6701ull, 0x009A33CD67009A33ull },
    { /* 426 */ 0x0602675C8B6AF797ull, 0x0099D722DABDE58Full },
    { /* 427 */ 0x0997AE76B50EFD01ull, 0x00997AE76B50EFD0ull },
    { /* 428 */ 0x37072D753BD02648ull, 0x00991F1A515885FBull },
    { /* 429 */ 0x098C3BAC74F5DB01ull, 0x0098C3BAC74F5DB0ull },
    { /* 430 */ 0x9868C809868C8099ull, 0x009868C809868C80ull },
    { /* 431 */ 0xC82AC40260390559ull, 0x00980E4156201301ull },
    { /* 432 */ 0x5ED097B425ED097Cull, 0x0097B425ED097B42ull },
    { /* 433 */ 0xAF00975A750FF68Bull, 0x00975A750FF68A58ull },
    { /* 434 */ 0x097012E025C04B81ull, 0x0097012E025C04B8ull },
    { /* 435 */ 0x96A850096A850097ull, 0x0096A850096A8500ull },
    { /* 436 */ 0xA6C0964FDA6C0965ull, 0x00964FDA6C0964FDull },
    { /* 437 */ 0xE891480E0F3B2AC4ull, 0x0095F7CC72D1B887ull },
    { /* 438 */ 0x568095A02568095Bull, 0x0095A02568095A02ull },
    { /* 439 */ 0xFC804AA4724BCF05ull, 0x009548E4979E0829ull },
    { /* 440 */ 0x094F2094F2094F21ull, 0x0094F2094F2094F2ull },
    { /* 441 */ 0xE4B7700949B92DDDull, 0x00949B92DDC02526ull },
    { /* 442 */ 0x4580944580944581ull, 0x0094458094458094ull },
    { /* 443 */ 0x7C3E692C7F221846ull, 0x0093EFD1C50E726Bull },
    { /* 444 */ 0x5C40939A85C4093Aull, 0x00939A85C40939A8ull },
    { /* 445 */ 0x59BE6B0093459BE7ull, 0x0093459BE6B00934ull },
    { /* 446 */ 0x9C2024BC44E10126ull, 0x0092F11384049788ull },
    { /* 447 */ 0xE51530AE1A583266ull, 0x00929CEBF48BBD90ull },
    { /* 448 */ 0x4924924924924925ull, 0x0092492492492492ull },
    { /* 449 */ 0xCCAF9BA70E40FF6Full, 0x0091F5BCB8BB02D9ull },
    { /* 450 */ 0x091A2B3C4D5E6F81ull, 0x0091A2B3C4D5E6F8ull },
    { /* 451 */ 0x0915009150091501ull, 0x0091500915009150ull },
    { /* 452 */ 0x90FDBC090FDBC091ull, 0x0090FDBC090FDBC0ull },
    { /* 453 */ 0x090ABCC0242AF301ull, 0x0090ABCC0242AF30ull },
    { /* 454 */ 0x3AA4A6E85132BFB8ull, 0x00905A38633E06C4ull },
    { /* 455 */ 0x0900900900900901ull, 0x0090090090090090ull },
    { /* 456 */ 0x3EE08FB823EE08FCull, 0x008FB823EE08FB82ull },
    { /* 457 */ 0x787008F67A1E3FDDull, 0x008F67A1E3FDC261ull },
    { /* 458 */ 0x189808F1779D9FDDull, 0x008F1779D9FDC3A2ull },
    { /* 459 */ 0x1D008EC7AB397256ull, 0x008EC7AB397255E4ull },
    { /* 460 */ 0x8356D1408E78356Eull, 0x008E78356D1408E7ull },
    { /* 461 */ 0xCD7764830DE20355ull, 0x008E2917E0E702C6ull },
    { /* 462 */ 0x08DDA52023769481ull, 0x008DDA5202376948ull },
    { /* 463 */ 0x904F9EAFD3C448FDull, 0x008D8BE33F95D715ull },
    { /* 464 */ 0x8D3DCB08D3DCB08Eull, 0x008D3DCB08D3DCB0ull },
    { /* 465 */ 0x08CF008CF008CF01ull, 0x008CF008CF008CF0ull },
    { /* 466 */ 0x2328A70119453809ull, 0x008CA29C046514E0ull },
    { /* 467 */ 0xCA47436D1679B229ull, 0x008C55841C815ED5ull },
    { /* 468 */ 0x08C08C08C08C08C1ull, 0x008C08C08C08C08Cull },
    { /* 469 */ 0xC022EF143237AD09ull, 0x008BBC50C8DEB420ull },
    { /* 470 */ 0x5A6AC1E808B70345ull, 0x008B70344A139BC7ull },
    { /* 471 */ 0xB246A87E19008B25ull, 0x008B246A87E19008ull },
    { /* 472 */ 0x22B63CBEEA4E1A09ull, 0x008AD8F2FBA93868ull },
    { /* 473 */ 0x5C022A37347FBABAull, 0x008A8DCD1FEEAE46ull },
    { /* 474 */ 0x463602290BE1C15Aull, 0x008A42F8705669DBull },
    { /* 475 */ 0xE033BD2BA79CD56Dull, 0x0089F87469A23920ull },
    { /* 476 */ 0xAE4089AE4089AE41ull, 0x0089AE4089AE4089ull },
    { /* 477 */ 0xEB9B1A4C35AB3410ull, 0x0089645C4F6E055Dull },
    { /* 478 */ 0x5055B0BC84D1F102ull, 0x00891AC73AE9819Bull },
    { /* 479 */ 0xD761CDC312B4A49Dull, 0x0088D180CD3A4133ull },
    { /* 480 */ 0x8888888888888889ull, 0x0088888888888888ull },
    { /* 481 */ 0xDF00883FDDF00884ull, 0x00883FDDF00883FDull },
    { /* 482 */ 0xF78087F78087F781ull, 0x0087F78087F78087ull },
    { /* 483 */ 0x4021EBDBF5664B44ull, 0x0087AF6FD5992D0Dull },
    { /* 484 */ 0xF130A9419637021Eull, 0x008767AB5F34E47Eull },
    { /* 485 */ 0x2032AC1300872033ull, 0x00872032AC130087ull },
    { /* 486 */ 0xC60EBFBC937D5DC3ull, 0x0086D905447A34ACull },
    { /* 487 */ 0x965742C27F3624CCull, 0x00869222B1ACF1CEull },
    { /* 488 */ 0x0864B8A7DE6D1D61ull, 0x00864B8A7DE6D1D6ull },
    { /* 489 */ 0x732C7FBCFD61E5D3ull, 0x0086053C345A0B84ull },
    { /* 490 */ 0x9AA518085BF37613ull, 0x0085BF37612CEE3Cull },
    { /* 491 */ 0x891FCDF271A9733Aull, 0x0085797B917765ABull },
    { /* 492 */ 0x0853408534085341ull, 0x0085340853408534ull },
    { /* 493 */ 0x84EEDD357C1B0085ull, 0x0084EEDD357C1B00ull },
    { /* 494 */ 0x9C8084A9F9C8084Bull, 0x0084A9F9C8084A9Full },
    { /* 495 */ 0x084655D9BAB2F101ull, 0x0084655D9BAB2F10ull },
    { /* 496 */ 0x0842108421084211ull, 0x0084210842108421ull },
    { /* 497 */ 0xE0945898778041EFull, 0x0083DCF94DC7570Cull },
    { /* 498 */ 0x67D6E020E64C1490ull, 0x00839930523FBE33ull },
    { /* 499 */ 0x0FE75FEF954A6387ull, 0x008355ACE3C897DBull },
    { /* 500 */ 0x3B645A1CAC083127ull, 0x0083126E978D4FDFull },
    { /* 501 */ 0x1909B565AF43F5C8ull, 0x0082CF750393AC33ull },
    { /* 502 */ 0xA32FEFAE680828CCull, 0x00828CBFBEB9A020ull },
    { /* 503 */ 0xC4F6547C2ED2B42Bull, 0x00824A4E60B3262Bull },
    { /* 504 */ 0x0820820820820821ull, 0x0082082082082082ull },
    { /* 505 */ 0x8E7290FB70081C64ull, 0x0081C635BC123FDFull },
    { /* 506 */ 0x77663297C7560207ull, 0x0081848DA8FAF0D2ull },
    { /* 507 */ 0x2F76A8A59E0B1BC6ull, 0x00814327E3B94F46ull },
    { /* 508 */ 0x8102040810204082ull, 0x0081020408102040ull },
    { /* 509 */ 0x97E3D5C0A0F16A20ull, 0x0080C121B28BD1BAull },
    { /* 510 */ 0x8080808080808081ull, 0x0080808080808080ull },
    { /* 511 */ 0x0100804020100805ull, 0x0080402010080402ull },
    { /* 512 */ 0x0000000000000000ull, 0x0080000000000000ull },
    { /* 513 */ 0xFF007FC01FF007FDull, 0x007FC01FF007FC01ull },
    { /* 514 */ 0x807F807F807F8080ull, 0x007F807F807F807Full },
    { /* 515 */ 0x81BD63EA20CEC9D2ull, 0x007F411E528439A9ull },
    { /* 516 */ 0x7F01FC07F01FC080ull, 0x007F01FC07F01FC0ull },
    { /* 517 */ 0xC68F99017C4948CBull, 0x007EC3184357A4E3ull },
    { /* 518 */ 0x2A807E8472A807E9ull, 0x007E8472A807E847ull },
    { /* 519 */ 0x6C8431535C3D29EEull, 0x007E460ADA04EEBCull },
    { /* 520 */ 0x07E07E07E07E07E1ull, 0x007E07E07E07E07Eull },
    { /* 521 */ 0x4643CEDD1CFD8B0Full, 0x007DC9F3397D4C29ull },
    { /* 522 */ 0xD2E19807D8C42B29ull, 0x007D8C42B2836ED5ull },
    { /* 523 */ 0x450467C5430F2C8Cull, 0x007D4ECE8FE88139ull },
    { /* 524 */ 0x5FC17734C36B7B1Eull, 0x007D1196792909C5ull },
    { /* 525 */ 0x07CD49A166E33B01ull, 0x007CD49A166E33B0ull },
    { /* 526 */ 0x329DB02EB8F16635ull, 0x007C97D9108C2AD4ull },
    { /* 527 */ 0x5311007C5B531101ull, 0x007C5B5311007C5Bull },
    { /* 528 */ 0x07C1F07C1F07C1F1ull, 0x007C1F07C1F07C1Full },
    { /* 529 */ 0x0E08B5F55A7ECA49ull, 0x007BE2F6CE27AEB3ull },
    { /* 530 */ 0xBA71FE1163807BA8ull, 0x007BA71FE1163807ull },
    { /* 531 */ 0x743035FF0928FAB3ull, 0x007B6B82A6CF4E95ull },
    { /* 532 */ 0xECC07B301ECC07B4ull, 0x007B301ECC07B301ull },
    { /* 533 */ 0x07AF4F3FE142C301ull, 0x007AF4F3FE142C30ull },
    { /* 534 */ 0xA01EAE807ABA01EBull, 0x007ABA01EAE807ABull },
    { /* 535 */ 0x926C245DC97351D4ull, 0x007A7F4841139E62ull },
    { /* 536 */ 0xA81E9131ABF0B768ull, 0x007A44C6AFC2DD9Cull },
    { /* 537 */ 0x3B1D147FC2FAC18Dull, 0x007A0A7CE6BBD424ull },
    { /* 538 */ 0x9B1F67BB7AC40B6Cull, 0x0079D06A965D4391ull },
    { /* 539 */ 0x75504464B0AEC86Full, 0x0079968F6F9D35ABull },
    { /* 540 */ 0xB240795CEB240796ull, 0x00795CEB240795CEull },
    { /* 541 */ 0x7191458F61016B6Bull, 0x0079237D65BCCE50ull },
    { /* 542 */ 0xFD2A825C935D8533ull, 0x0078EA45E77069CCull },
    { /* 543 */ 0xBF69226A8C7E5994ull, 0x0078B1445C67B856ull },
    { /* 544 */ 0x7878787878787879ull, 0x0078787878787878ull },
    { /* 545 */ 0x1F00783FE1F00784ull, 0x00783FE1F00783FEull },
    { /* 546 */ 0x0780780780780781ull, 0x0078078078078078ull },
    { /* 547 */ 0x1C1497A266068D57ull, 0x0077CF53C5F7936Cull },
    { /* 548 */ 0x1C077975B8FE21A3ull, 0x0077975B8FE21A29ull },
    { /* 549 */ 0x0775F978C5B65301ull, 0x00775F978C5B6530ull },
    { /* 550 */ 0x0772807728077281ull, 0x0077280772807728ull },
    { /* 551 */ 0x4E84E0DF034094ADull, 0x0076F0AAF9F5C751ull },
    { /* 552 */ 0x981DAE6076B981DBull, 0x0076B981DAE6076Bull },
    { /* 553 */ 0x179C01DA0A2F3804ull, 0x0076828BCE00ED05ull },
    { /* 554 */ 0xD0DDCE180764BC89ull, 0x00764BC88C79FE26ull },
    { /* 555 */ 0x7D00761537D00762ull, 0x00761537D0076153ull },
    { /* 556 */ 0x45FC51093568FA7Aull, 0x0075DED952E0B0CEull },
    { /* 557 */ 0xCB253A5EADBB0F2Bull, 0x0075A8ACCFBDD11Eull },
    { /* 558 */ 0x07572B201D5CAC81ull, 0x007572B201D5CAC8ull },
    { /* 559 */ 0xD7B3100753CE8A4Eull, 0x00753CE8A4DDA727ull },
    { /* 560 */ 0x0750750750750751ull, 0x0075075075075075ull },
    { /* 561 */ 0xE92F0074D1E92F01ull, 0x0074D1E92F0074D1ull },
    { /* 562 */ 0xAE01D272CA3FC5B2ull, 0x00749CB28FF16C69ull },
    { /* 563 */ 0xC72960DA42632049ull, 0x007467AC557C228Eull },
    { /* 564 */ 0xCB58F6EC07432D64ull, 0x007432D63DBB01D0ull },
    { /* 565 */ 0x73FE30073FE30074ull, 0x0073FE30073FE300ull },
    { /* 566 */ 0x6C8D1DDA01CF26E6ull, 0x0073C9B97112FF18ull },
    { /* 567 */ 0xCE55C8EAC790073Aull, 0x007395723AB1E401ull },
    { /* 568 */ 0x4481CD85689039B1ull, 0x0073615A240E6C2Bull },
    { /* 569 */ 0xF44D6287DF9B383Eull, 0x00732D70ED8DB8E9ull },
    { /* 570 */ 0x658072F9B6580730ull, 0x0072F9B658072F9Bull },
    { /* 571 */ 0xC69CEAED9E43401Dull, 0x0072C62A24C3797Full },
    { /* 572 */ 0x07292CC157B86441ull, 0x007292CC157B8644ull },
    { /* 573 */ 0x60F30B2B563A148Eull, 0x00725F9BEC579133ull },
    { /* 574 */ 0x0722C996BEE29081ull, 0x00722C996BEE2908ull },
    { /* 575 */ 0xCF78A766D8602ABEull, 0x0071F9C457433A52ull },
    { /* 576 */ 0xC71C71C71C71C71Dull, 0x0071C71C71C71C71ull },
    { /* 577 */ 0xC0FF8E6B5E80AA5Full, 0x007194A17F55A10Dull },
    { /* 578 */ 0x07F8E9DACBBCAD9Full, 0x0071625344352617ull },
    { /* 579 */ 0x7A79259500713032ull, 0x007130318515AA39ull },
    { /* 580 */ 0x70FE3C070FE3C071ull, 0x0070FE3C070FE3C0ull },
    { /* 581 */ 0xEB4A76F7A0D37F57ull, 0x0070CC728FA459E2ull },
    { /* 582 */ 0x9AD4E4BA80709AD5ull, 0x00709AD4E4BA8070ull },
    { /* 583 */ 0x7AF3440FCED1E4C7ull, 0x00706962CC9FD5D8ull },
    { /* 584 */ 0xC0E070381C0E0704ull, 0x0070381C0E070381ull },
    { /* 585 */ 0x0700700700700701ull, 0x0070070070070070ull },
    { /* 586 */ 0xAF9E24B23D29109Aull, 0x006FD60FBA1A362Bull },
    { /* 587 */ 0x93D7E099834557A9ull, 0x006FA549B41DA7E7ull },
    { /* 588 */ 0x2B899406F74AE266ull, 0x006F74AE26501BDDull },
    { /* 589 */ 0x72BE5EC01BD10F37ull, 0x006F443CD95146D8ull },
    { /* 590 */ 0xE891CA32550B4807ull, 0x006F13F59620F9ECull },
    { /* 591 */ 0x1A6C4A8115399C60ull, 0x006EE3D8261E524Dull },
    { /* 592 */ 0x45306EB3E45306ECull, 0x006EB3E45306EB3Eull },
    { /* 593 */ 0xAC3FE45EF986427Cull, 0x006E8419E6F61221ull },
    { /* 594 */ 0x5C3A9CE01B951E2Cull, 0x006E5478AC63FC8Dull },
    { /* 595 */ 0x25006E25006E2501ull, 0x006E25006E25006Eull },
    { /* 596 */ 0xABCFE48293C225CDull, 0x006DF5B0F768CE2Cull },
    { /* 597 */ 0x8B5D0D4B0AB8637Cull, 0x006DC68A13B9ACCFull },
    { /* 598 */ 0x8C6A2ACF3283DA54ull, 0x006D978B8EFBB814ull },
    { /* 599 */ 0x15CBDC19A48A7886ull, 0x006D68B5356C207Bull },
    { /* 600 */ 0x06D3A06D3A06D3A1ull, 0x006D3A06D3A06D3Aull },
    { /* 601 */ 0x42E00DA17006D0B9ull, 0x006D0B803685C01Bull },
    { /* 602 */ 0x484AD806CDD212B7ull, 0x006CDD212B601B37ull },
    { /* 603 */ 0x401B2BBA5FF26A23ull, 0x006CAEE97FC9A88Bull },
    { /* 604 */ 0x06C80D901B203641ull, 0x006C80D901B20364ull },
    { /* 605 */ 0xC0F3BA9ADE926818ull, 0x006C52EF7F5D8398ull },
    { /* 606 */ 0xA15F78D18806C253ull, 0x006C252CC7648A8Full },
    { /* 607 */ 0x97682BDC92C488A6ull, 0x006BF790A8B2D207ull },
    { /* 608 */ 0xAF286BCA1AF286BDull, 0x006BCA1AF286BCA1ull },
    { /* 609 */ 0xFDE5F006B9CCB748ull, 0x006B9CCB7470A824ull },
    { /* 610 */ 0x06B6FA1FE5241781ull, 0x006B6FA1FE524178ull },
    { /* 611 */ 0x94521F0141C7DB22ull, 0x006B429E605DDA4Aull },
    { /* 612 */ 0x15C06B15C06B15C1ull, 0x006B15C06B15C06Bull },
    { /* 613 */ 0x9C307197986E4051ull, 0x006AE907EF4B96C2ull },
    { /* 614 */ 0xA871683C0A01AAF2ull, 0x006ABC74BE1FAFF2ull },
    { /* 615 */ 0x06A9006A9006A901ull, 0x006A9006A9006A90ull },
    { /* 616 */ 0x06A63BD81A98EF61ull, 0x006A63BD81A98EF6ull },
    { /* 617 */ 0x6EC7FCAE43372EE3ull, 0x006A37991A23AEADull },
    { /* 618 */ 0x96C87DEDC601A82Full, 0x006A0B9944C38562ull },
    { /* 619 */ 0x26E027B3E72F8F83ull, 0x0069DFBDD4295B66ull },
    { /* 620 */ 0x069B4069B4069B41ull, 0x0069B4069B4069B4ull },
    { /* 621 */ 0x156FB77230A4E535ull, 0x006988736D3E3F7Cull },
    { /* 622 */ 0x559B935813C170C6ull, 0x00695D041DA22928ull },
    { /* 623 */ 0x401A4C6E200D2638ull, 0x006931B8803498DCull },
    { /* 624 */ 0x0690690690690691ull, 0x0069069069069069ull },
    { /* 625 */ 0x95E9E1B089A02753ull, 0x0068DB8BAC710CB2ull },
    { /* 626 */ 0x3A11FE5D3D5783AFull, 0x0068B0AA1F147281ull },
    { /* 627 */ 0xD0A351401A217AE6ull, 0x006885EB95D7FCBBull },
    { /* 628 */ 0x85B4FE5E92C0685Cull, 0x00685B4FE5E92C06ull },
    { /* 629 */ 0x23006830D6E4BB38ull, 0x006830D6E4BB37C2ull },
    { /* 630 */ 0x0680680680680681ull, 0x0068068068068068ull },
    { /* 631 */ 0xE2622E4019F71312ull, 0x0067DC4C45C8033Eull },
    { /* 632 */ 0x74A8819EC8E95104ull, 0x0067B23A5440CF64ull },
    { /* 633 */ 0x713D1163E47FCC3Cull, 0x0067884A69F57C28ull },
    { /* 634 */ 0xE559A3EFD93C915Dull, 0x00675E7C5DADA0B4ull },
    { /* 635 */ 0x6734D006734D0068ull, 0x006734D006734D00ull },
    { /* 636 */ 0x70B453B92840670Cull, 0x00670B453B928406ull },
    { /* 637 */ 0x4F92B0066E1DBD4Aull, 0x0066E1DBD498B742ull },
    { /* 638 */ 0x20E71F4C3CFD97ADull, 0x0066B893A9544369ull },
    { /* 639 */ 0x5956EF93079CA50Full, 0x00668F6C91D3EE5Full },
    { /* 640 */ 0x6666666666666667ull, 0x0066666666666666ull },
    { /* 641 */ 0x00663D80FF99C280ull, 0x00663D80FF99C27Full },
    { /* 642 */ 0xCF5A1E4E27E01986ull, 0x006614BC363B03FCull },
    { /* 643 */ 0x0FECE3BB855FF343ull, 0x0065EC17E3559948ull },
    { /* 644 */ 0xF01970E4F80CB873ull, 0x0065C393E032E1C9ull },
    { /* 645 */ 0x659B300659B30066ull, 0x00659B300659B300ull },
    { /* 646 */ 0x4A806572EC2F8DDFull, 0x006572EC2F8DDEB6ull },
    { /* 647 */ 0x965B012FE058A170ull, 0x00654AC835CFBA5Cull },
    { /* 648 */ 0x948B0FCD6E9E0653ull, 0x006522C3F35BA781ull },
    { /* 649 */ 0x01F8E65C4D5012F0ull, 0x0064FADF42A99D63ull },
    { /* 650 */ 0x064D319FE6CB3981ull, 0x0064D319FE6CB398ull },
    { /* 651 */ 0x064AB740192ADD01ull, 0x0064AB740192ADD0ull },
    { /* 652 */ 0x56615FCDBE096C5Full, 0x006483ED274388A3ull },
    { /* 653 */ 0xDDE48EB38D8677F7ull, 0x00645C854AE10772ull },
    { /* 654 */ 0xC48064353C480644ull, 0x0064353C48064353ull },
    { /* 655 */ 0x4C9AC5C3CF892F4Bull, 0x00640E11FA873B04ull },
    { /* 656 */ 0x063E7063E7063E71ull, 0x0063E7063E7063E7ull },
    { /* 657 */ 0x8F0063C018F0063Dull, 0x0063C018F0063C01ull },
    { /* 658 */ 0x1C031CCA4F5E26E8ull, 0x00639949EBC4DCFCull },
    { /* 659 */ 0x13CFD47DDD09B631ull, 0x006372990E5F901Full },
    { /* 660 */ 0x0634C0634C0634C1ull, 0x00634C0634C0634Cull },
    { /* 661 */ 0x58B09AEAB2EDCC1Bull, 0x006325913C07BEEFull },
    { /* 662 */ 0x062FF3A018BFCE81ull, 0x0062FF3A018BFCE8ull },
    { /* 663 */ 0xD90062D90062D901ull, 0x0062D90062D90062ull },
    { /* 664 */ 0x8DE12818ACB90F6Cull, 0x0062B2E43DAFCEA6ull },
    { /* 665 */ 0x5700628CE5700629ull, 0x00628CE5700628CEull },
    { /* 666 */ 0x3D80626703D80627ull, 0x00626703D8062670ull },
    { /* 667 */ 0xE7D1F16A509985F3ull, 0x0062413F540DD12Cull },
    { /* 668 */ 0x52C7480C4372F856ull, 0x00621B97C2AEC126ull },
    { /* 669 */ 0x12C0187D8340AB6Full, 0x0061F60D02ADBA5Bull },
    { /* 670 */ 0xB9B20DC1565A2C53ull, 0x0061D09EF3024AE3ull },
    { /* 671 */ 0x061AB4D72D66A101ull, 0x0061AB4D72D66A10ull },
    { /* 672 */ 0x8618618618618619ull, 0x0061861861861861ull },
    { /* 673 */ 0x60FF9E9F00616100ull, 0x006160FF9E9F0061ull },
    { /* 674 */ 0x00C2780613C0309Full, 0x00613C0309E0184Full },
    { /* 675 */ 0x5B66C77D88E99FACull, 0x00611722833944A5ull },
    { /* 676 */ 0xA398FE7C368854D5ull, 0x0060F25DEACAFB74ull },
    { /* 677 */ 0x2E220851AD90D3C2ull, 0x0060CDB520E5E88Eull },
    { /* 678 */ 0x60A928060A928061ull, 0x0060A928060A9280ull },
    { /* 679 */ 0x84B67AE9006084B7ull, 0x006084B67AE90060ull },
    { /* 680 */ 0x6060606060606061ull, 0x0060606060606060ull },
    { /* 681 */ 0x7C6DC49AE0CC7FD0ull, 0x00603C25977EAF2Dull },
    { /* 682 */ 0x0601806018060181ull, 0x0060180601806018ull },
    { /* 683 */ 0x4017FD005FF40180ull, 0x005FF4017FD005FFull },
    { /* 684 */ 0x7F405FD017F405FEull, 0x005FD017F405FD01ull },
    { /* 685 */ 0xB005FAC493FE814Full, 0x005FAC493FE814EDull },
    { /* 686 */ 0x6E75EC9841ADE6A0ull, 0x005F889545693C74ull },
    { /* 687 */ 0xBB1005F64FBE6A93ull, 0x005F64FBE6A92D16ull },
    { /* 688 */ 0x5F417D05F417D060ull, 0x005F417D05F417D0ull },
    { /* 689 */ 0x1943FE83879DE8F7ull, 0x005F1E1885C2527Cull },
    { /* 690 */ 0xACE48B805EFACE49ull, 0x005EFACE48B805EFull },
    { /* 691 */ 0xFC4B93D20F8F5FF5ull, 0x005ED79E31A4DCCDull },
    { /* 692 */ 0x516324FE852DDF72ull, 0x005EB4882383B30Dull },
    { /* 693 */ 0x05E918C017A46301ull, 0x005E918C017A4630ull },
    { /* 694 */ 0xBD9A30B10F7E27D7ull, 0x005E6EA9AED8E62Dull },
    { /* 695 */ 0x6B3040D42ABA61FBull, 0x005E4BE10F1A270Bull },
    { /* 696 */ 0x5E293205E293205Full, 0x005E293205E29320ull },
    { /* 697 */ 0x9C77005E069C7701ull, 0x005E069C77005E06ull },
    { /* 698 */ 0xD052279C3D9DB52Full, 0x005DE420466B1834ull },
    { /* 699 */ 0x17706F5610D8D006ull, 0x005DC1BD58436340ull },
    { /* 700 */ 0x05D9F7390D2A6C41ull, 0x005D9F7390D2A6C4ull },
    { /* 701 */ 0x337DFDCF106F04C0ull, 0x005D7D42D48AC5EFull },
    { /* 702 */ 0xB0805D5B2B0805D6ull, 0x005D5B2B0805D5B2ull },
    { /* 703 */ 0xC1005D392C1005D4ull, 0x005D392C1005D392ull },
    { /* 704 */ 0x45D1745D1745D175ull, 0x005D1745D1745D17ull },
    { /* 705 */ 0x3C472BF005CF5784ull, 0x005CF578316267DAull },
    { /* 706 */ 0xC3CEAF805CD3C316ull, 0x005CD3C31507FA32ull },
    { /* 707 */ 0x1C9AF9D82B7381FEull, 0x005CB22661C3E47Bull },
    { /* 708 */ 0x1724287F46DEBC06ull, 0x005C90A1FD1B7AF0ull },
    { /* 709 */ 0x70A789918311B14Aull, 0x005C6F35CCBA5028ull },
    { /* 710 */ 0x9D34A46ABA0CFAF4ull, 0x005C4DE1B671F022ull },
    { /* 711 */ 0x84240170B29680E7ull, 0x005C2CA5A0399BE7ull },
    { /* 712 */ 0xB81702E05C0B8171ull, 0x005C0B81702E05C0ull },
    { /* 713 */ 0xB7D4EA19221C0170ull, 0x005BEA750C910E00ull },
    { /* 714 */ 0xC9805BC9805BC981ull, 0x005BC9805BC9805Bull },
    { /* 715 */ 0x05BA8A34462D1D01ull, 0x005BA8A34462D1D0ull },
    { /* 716 */ 0x2C55CF5FD23C112Aull, 0x005B87DDAD0CDF1Bull },
    { /* 717 */ 0xE039207DADE14B57ull, 0x005B672F7C9BABBCull },
    { /* 718 */ 0xEC088E9E4E70AB25ull, 0x005B46989A072183ull },
    { /* 719 */ 0x350D2C819A2B7028ull, 0x005B2618EC6AD0A5ull },
    { /* 720 */ 0x05B05B05B05B05B1ull, 0x005B05B05B05B05Bull },
    { /* 721 */ 0x5CABD9A73C016B96ull, 0x005AE55ECD39E00Bull },
    { /* 722 */ 0xF1D132595A0F99E3ull, 0x005AC5242A8C68F3ull },
    { /* 723 */ 0xA5005AA5005AA501ull, 0x005AA5005AA5005Aull },
    { /* 724 */ 0x0F8ED9CFE95EC32Full, 0x005A84F3454DCA41ull },
    { /* 725 */ 0xF3FE966C0CB6338Eull, 0x005A64FCD2731C99ull },
    { /* 726 */ 0x4B75C62BB97A016Aull, 0x005A451CEA2342FFull },
    { /* 727 */ 0xB3F08195A7F78C81ull, 0x005A2553748E42E7ull },
    { /* 728 */ 0x05A05A05A05A05A1ull, 0x005A05A05A05A05Aull },
    { /* 729 */ 0xD95F2A7DB7A8E92Dull, 0x0059E60382FC231Dull },
    { /* 730 */ 0xCD8059C67CD8059Dull, 0x0059C67CD8059C67ull },
    { /* 731 */ 0x59A70C41D6AD005Aull, 0x0059A70C41D6AD00ull },
    { /* 732 */ 0x05987B1A9448BE41ull, 0x005987B1A9448BE4ull },
    { /* 733 */ 0xDA47F207AEF95D40ull, 0x0059686CF744CD5Bull },
    { /* 734 */ 0xE795F90647265D79ull, 0x0059493E14ED2A8Cull },
    { /* 735 */ 0xBC6E100592A24EB8ull, 0x00592A24EB73497Dull },
    { /* 736 */ 0xB21642C8590B2165ull, 0x00590B21642C8590ull },
    { /* 737 */ 0xEEA1DDF59451F9C0ull, 0x0058EC33688DB871ull },
    { /* 738 */ 0x058CD5AE22B03781ull, 0x0058CD5AE22B0378ull },
    { /* 739 */ 0x20901BB68F6A5960ull, 0x0058AE97BAB79976ull },
    { /* 740 */ 0x9DC0588FE9DC0589ull, 0x00588FE9DC0588FEull },
    { /* 741 */ 0x1300587151300588ull, 0x0058715130058715ull },
    { /* 742 */ 0xA9BF2330FDEE0F2Full, 0x005852CDA0C6BA4Eull },
    { /* 743 */ 0xC8DF4490B5EC0423ull, 0x0058345F1876865Full },
    { /* 744 */ 0x0581605816058161ull, 0x0058160581605816ull },
    { /* 745 */ 0x563FEA020FCE84A4ull, 0x0057F7C0C5ED71BDull },
    { /* 746 */ 0x8734D8E11D8316A7ull, 0x0057D990D0A4B7EFull },
    { /* 747 */ 0xEFE4956B4432B860ull, 0x0057BB758C2A7ECCull },
    { /* 748 */ 0x6EE340579D6EE341ull, 0x00579D6EE340579Dull },
    { /* 749 */ 0xB1BAF5678FE4A82Aull, 0x00577F7CC0C4DED8ull },
    { /* 750 */ 0xD242E6BDC805761Aull, 0x0057619F0FB38A94ull },
    { /* 751 */ 0x55383EB8C19E8238ull, 0x005743D5BB24795Aull },
    { /* 752 */ 0x9882B9310572620Bull, 0x00572620AE4C415Cull },
    { /* 753 */ 0xC21FF51EF0057088ull, 0x0057087FD47BC015ull },
    { /* 754 */ 0x4339B8056EAF3192ull, 0x0056EAF3191FEA45ull },
    { /* 755 */ 0x056CD7A67C19C501ull, 0x0056CD7A67C19C50ull },
    { /* 756 */ 0x5AC056B015AC056Cull, 0x0056B015AC056B01ull },
    { /* 757 */ 0xCB3E90103B84E751ull, 0x005692C4D1AB74ABull },
    { /* 758 */ 0xDD8D2BE7AEF1D0B8ull, 0x00567587C48F32A8ull },
    { /* 759 */ 0xFA4421BA84E4015Aull, 0x0056585E70A74B36ull },
    { /* 760 */ 0x8C20563B48C20564ull, 0x00563B48C20563B4ull },
    { /* 761 */ 0x8183883DE5C2C67Aull, 0x00561E46A4D5F337ull },
    { /* 762 */ 0x5601580560158057ull, 0x0056015805601580ull },
    { /* 763 */ 0xCD0055E47CD0055Full, 0x0055E47CD0055E47ull },
    { /* 764 */ 0x88B6486080AB8F6Aull, 0x0055C7B4F141ACE6ull },
    { /* 765 */ 0xAB0055AB0055AB01ull, 0x0055AB0055AB0055ull },
    { /* 766 */ 0xAFCA8704ADC930CCull, 0x00558E5EE9F14B87ull },
    { /* 767 */ 0xB2E64CC4416B23B7ull, 0x005571D09ADE4A18ull },
    { /* 768 */ 0x5555555555555556ull, 0x0055555555555555ull },
    { /* 769 */ 0x782D463DEB5C3699ull, 0x005538ED06533997ull },
    { /* 770 */ 0x0551C979AEE0BF81ull, 0x00551C979AEE0BF8ull },
    { /* 771 */ 0x0055005500550056ull, 0x0055005500550055ull },
    { /* 772 */ 0x1BDADC2FC054E426ull, 0x0054E42523D03FABull },
    { /* 773 */ 0x11E231AD34A83CF0ull, 0x0054C807F2C0BEC2ull },
    { /* 774 */ 0xFF56A8054ABFD5ABull, 0x0054ABFD5AA0152Aull },
    { /* 775 */ 0x0549005490054901ull, 0x0054900549005490ull },
    { /* 776 */ 0x741FAB8BE0547420ull, 0x0054741FAB8BE054ull },
    { /* 777 */ 0xC70054584C700546ull, 0x0054584C70054584ull },
    { /* 778 */ 0xB79BF81A52EB9957ull, 0x00543C8B84471315ull },
    { /* 779 */ 0xB46A79977F2DADD8ull, 0x005420DCD643B271ull },
    { /* 780 */ 0x0540540540540541ull, 0x0054054054054054ull },
    { /* 781 */ 0xEC014FA6D7AEB598ull, 0x0053E9B5EBAD65F0ull },
    { /* 782 */ 0x1105E48053CE3D8Cull, 0x0053CE3D8B75326Aull },
    { /* 783 */ 0x8C96655A9082C771ull, 0x0053B2D721ACF48Eull },
    { /* 784 */ 0xE0A72F05397829CCull, 0x005397829CBC14E5ull },
    { /* 785 */ 0x37C3FEB20F00537Dull, 0x00537C3FEB20F005ull },
    { /* 786 */ 0x3FD64F788247A769ull, 0x0053610EFB70B12Eull },
    { /* 787 */ 0xF92B43558CD94A7Eull, 0x005345EFBC572D36ull },
    { /* 788 */ 0xD3D137E0CFEB3548ull, 0x00532AE21C96BDB9ull },
    { /* 789 */ 0x7713CAC9D0A0EECEull, 0x00530FE60B081C8Dull },
    { /* 790 */ 0x9086CE18A0BAA736ull, 0x0052F4FB769A3F83ull },
    { /* 791 */ 0x09B590052DA224E6ull, 0x0052DA224E52346Eull },
    { /* 792 */ 0x052BF5A814AFD6A1ull, 0x0052BF5A814AFD6Aull },
    { /* 793 */ 0x052A4A3FEB56D701ull, 0x0052A4A3FEB56D70ull },
    { /* 794 */ 0x9FEB5D805289FEB6ull, 0x005289FEB5D80528ull },
    { /* 795 */ 0x26F6A960ED005270ull, 0x00526F6A960ED005ull },
    { /* 796 */ 0xA885C9F8480A4A9Dull, 0x005254E78ECB419Bull },
    { /* 797 */ 0xB38DA6B484561534ull, 0x00523A758F941345ull },
    { /* 798 */ 0x4880522014880523ull, 0x0052201488052201ull },
    { /* 799 */ 0x625CEA887D98D4BFull, 0x005205C467CF4C93ull },
    { /* 800 */ 0x851EB851EB851EB9ull, 0x0051EB851EB851EBull },
    { /* 801 */ 0xC0147455A726ABF2ull, 0x0051D1569C9AAFC7ull },
    { /* 802 */ 0x941C16FB87FAE48Dull, 0x0051B738D1658198ull },
    { /* 803 */ 0x2F2EDD4014674AECull, 0x00519D2BAD1C5FA4ull },
    { /* 804 */ 0x701460CBC7F5CF9Bull, 0x0051832F1FD73E68ull },
    { /* 805 */ 0x267AC0B72CD6F9F6ull, 0x0051694319C24E3Bull },
    { /* 806 */ 0x0514F678B1DDB281ull, 0x00514F678B1DDB28ull },
    { /* 807 */ 0xBCBF9A7CFC82B248ull, 0x0051359C643E2D0Bull },
    { /* 808 */ 0xB9079A9D260511BFull, 0x00511BE1958B67EBull },
    { /* 809 */ 0xF7C5C6686CDAF9FDull, 0x005102370F816C89ull },
    { /* 810 */ 0x76D5A63DF218050Full, 0x0050E89CC2AFB934ull },
    { /* 811 */ 0xB43DDE8A4249DD48ull, 0x0050CF129FB94ACFull },
    { /* 812 */ 0xBE6C74050B598976ull, 0x0050B59897547E1Bull },
    { /* 813 */ 0x5371AC3DB793AE22ull, 0x00509C2E9A4AF133ull },
    { /* 814 */ 0x8F690AB1603C6220ull, 0x005082D499796544ull },
    { /* 815 */ 0xAB81197164D456B2ull, 0x0050698A85CFA082ull },
    { /* 816 */ 0x5050505050505051ull, 0x0050505050505050ull },
    { /* 817 */ 0xFF5F91B42BDE28BDull, 0x00503725EA10EBA1ull },
    { /* 818 */ 0x1909638551FEBF88ull, 0x00501E0B44399598ull },
    { /* 819 */ 0x0500500500500501ull, 0x0050050050050050ull },
    { /* 820 */ 0x04FEC04FEC04FEC1ull, 0x004FEC04FEC04FECull },
    { /* 821 */ 0x3A4F33730F4767D6ull, 0x004FD31941CAFDD1ull },
    { /* 822 */ 0x6804FBA3D0A96BC2ull, 0x004FBA3D0A96BC1Bull },
    { /* 823 */ 0xFCE3B19D15768345ull, 0x004FA1704AA75945ull },
    { /* 824 */ 0xF1165E7254813E23ull, 0x004F88B2F392A409ull },
    { /* 825 */ 0x04F7004F7004F701ull, 0x004F7004F7004F70ull },
    { /* 826 */ 0xEF43906D182CA12Aull, 0x004F576646A9D716ull },
    { /* 827 */ 0x0A3719B15FA6D94Full, 0x004F3ED6D45A63ADull },
    { /* 828 */ 0x1013C995A47BABE8ull, 0x004F265691EEAF9Dull },
    { /* 829 */ 0x78BE397018B457B4ull, 0x004F0DE57154EBEDull },
    { /* 830 */ 0x0B1A867A23C73F8Aull, 0x004EF583648CA552ull },
    { /* 831 */ 0x35E9341004EDD306ull, 0x004EDD305DA6A96Full },
    { /* 832 */ 0xC4EC4EC4EC4EC4EDull, 0x004EC4EC4EC4EC4Eull },
    { /* 833 */ 0x8824E0F5DBBC6393ull, 0x004EACB72A1A6E05ull },
    { /* 834 */ 0x83FD8B5B78F0A6FCull, 0x004E9490E1EB2089ull },
    { /* 835 */ 0x4239067035F59378ull, 0x004E7C79688BCDB8ull },
    { /* 836 */ 0xDC7A7CF013991C2Dull, 0x004E6470B061FD8Cull },
    { /* 837 */ 0x5A3A1CC013931DABull, 0x004E4C76ABE3DC85ull },
    { /* 838 */ 0xFCF1F28EF80EA9DBull, 0x004E348B4D982236ull },
    { /* 839 */ 0x16462DC4CE43BCE0ull, 0x004E1CAE8815F811ull },
    { /* 840 */ 0x04E04E04E04E04E1ull, 0x004E04E04E04E04Eull },
    { /* 841 */ 0xF5A681AC9833239Eull, 0x004DED20921C9D11ull },
    { /* 842 */ 0x07E7AD4D39C46897ull, 0x004DD56F472517B7ull },
    { /* 843 */ 0x740136F7317FD922ull, 0x004DBDCC5FF64846ull },
    { /* 844 */ 0x54EDCD0AEB5FD92Dull, 0x004DA637CF781D1Eull },
    { /* 845 */ 0xB613FEC9C539DD77ull, 0x004D8EB188A262C3ull },
    { /* 846 */ 0x8790A49D5A2CC8EEull, 0x004D77397E7CABE0ull },
    { /* 847 */ 0x1C1BCE6E9EFADCA4ull, 0x004D5FCFA41E396Dull },
    { /* 848 */ 0xD4873ECADE304D49ull, 0x004D4873ECADE304ull },
    { /* 849 */ 0x9DB3693C0134C49Aull, 0x004D31264B61FF65ull },
    { /* 850 */ 0xE6B3804D19E6B381ull, 0x004D19E6B3804D19ull },
    { /* 851 */ 0xB5B263457D7168FDull, 0x004D02B5185DDB4Cull },
    { /* 852 */ 0x830133AE45B57BCCull, 0x004CEB916D5EF2C7ull },
    { /* 853 */ 0x828D0E1B02B37859ull, 0x004CD47BA5F6FF19ull },
    { /* 854 */ 0x04CBD73B5A877E81ull, 0x004CBD73B5A877E8ull },
    { /* 855 */ 0x99004CA6799004CBull, 0x004CA6799004CA67ull },
    { /* 856 */ 0x9B8396BA9DE81324ull, 0x004C8F8D28AC42FDull },
    { /* 857 */ 0xDB8E7CDD0CD8454Eull, 0x004C78AE734DF709ull },
    { /* 858 */ 0x04C61DD63A7AED81ull, 0x004C61DD63A7AED8ull },
    { /* 859 */ 0x7997B1528D430E02ull, 0x004C4B19ED85CFB8ull },
    { /* 860 */ 0x4C346404C346404Dull, 0x004C346404C34640ull },
    { /* 861 */ 0x04C1DBB9D4970B01ull, 0x004C1DBB9D4970B0ull },
    { /* 862 */ 0xE4156201301C82ADull, 0x004C0720AB100980ull },
    { /* 863 */ 0x530F20ED4FCBCA9Bull, 0x004BF093221D1218ull },
    { /* 864 */ 0x2F684BDA12F684BEull, 0x004BDA12F684BDA1ull },
    { /* 865 */ 0xA78283FED0F17F8Full, 0x004BC3A01C695C0Aull },
    { /* 866 */ 0x57804BAD3A87FB46ull, 0x004BAD3A87FB452Cull },
    { /* 867 */ 0x5AA5F13C87D31E6Aull, 0x004B96E22D78C40Full },
    { /* 868 */ 0x04B8097012E025C1ull, 0x004B8097012E025Cull },
    { /* 869 */ 0xF7C05E44EF355231ull, 0x004B6A58F774F3EBull },
    { /* 870 */ 0x4B542804B542804Cull, 0x004B542804B54280ull },
    { /* 871 */ 0x7B2680BC1B0A497Bull, 0x004B3E041D64399Bull },
    { /* 872 */ 0xD3604B27ED3604B3ull, 0x004B27ED3604B27Eull },
    { /* 873 */ 0x11E34327004B11E4ull, 0x004B11E34327004Bull },
    { /* 874 */ 0xF448A407079D9562ull, 0x004AFBE63968DC43ull },
    { /* 875 */ 0x6B14C5C73DBB89CEull, 0x004AE5F60D755236ull },
    { /* 876 */ 0x2B404AD012B404AEull, 0x004AD012B404AD01ull },
    { /* 877 */ 0x57DCF8B3D020B17Bull, 0x004ABA3C21DC633Full },
    { /* 878 */ 0xFE4025523925E783ull, 0x004AA4724BCF0414ull },
    { /* 879 */ 0x1FBEC3217E1B6067ull, 0x004A8EB526BC241Dull },
    { /* 880 */ 0x04A7904A7904A791ull, 0x004A7904A7904A79ull },
    { /* 881 */ 0x94C6C18689BC012Aull, 0x004A6360C344DE00ull },
    { /* 882 */ 0x725BB804A4DC96EFull, 0x004A4DC96EE01293ull },
    { /* 883 */ 0x9504EDBC2896C240ull, 0x004A383E9F74D68Aull },
    { /* 884 */ 0x22C04A22C04A22C1ull, 0x004A22C04A22C04Aull },
    { /* 885 */ 0x45B686CC38B23005ull, 0x004A0D4E6415FBF3ull },
    { /* 886 */ 0xBE1F34963F910C23ull, 0x0049F7E8E2873935ull },
    { /* 887 */ 0xF020531EE1B2130Dull, 0x0049E28FBABB9940ull },
    { /* 888 */ 0x2E2049CD42E2049Dull, 0x0049CD42E2049CD4ull },
    { /* 889 */ 0x009370049B8024DDull, 0x0049B8024DC0126Eull },
    { /* 890 */ 0x2CDF358049A2CDF4ull, 0x0049A2CDF358049Aull },
    { /* 891 */ 0x3D7C689567B8BEC8ull, 0x00498DA5C842A85Eull },
    { /* 892 */ 0x4E10125E22708093ull, 0x00497889C2024BC4ull },
    { /* 893 */ 0xDEBEECCAF71CF440ull, 0x00496379D6254483ull },
    { /* 894 */ 0x728A98570D2C1933ull, 0x00494E75FA45DEC8ull },
    { /* 895 */ 0xBD1172B30E967422ull, 0x0049397E240A4C15ull },
    { /* 896 */ 0x2492492492492493ull, 0x0049249249249249ull },
    { /* 897 */ 0x5D9C1C8A21AD3C38ull, 0x00490FB25F527AB8ull },
    { /* 898 */ 0xE657CDD387207FB8ull, 0x0048FADE5C5D816Cull },
    { /* 899 */ 0x27DDD42596A373E6ull, 0x0048E616361AC47Cull },
    { /* 900 */ 0x048D159E26AF37C1ull, 0x0048D159E26AF37Cull },
    { /* 901 */ 0x9AD9A482B30048BDull, 0x0048BCA9573A3F13ull },
    { /* 902 */ 0x048A8048A8048A81ull, 0x0048A8048A8048A8ull },
    { /* 903 */ 0xDADC90048936B725ull, 0x0048936B72401224ull },
    { /* 904 */ 0x487EDE0487EDE049ull, 0x00487EDE0487EDE0ull },
    { /* 905 */ 0x72D8AE3FEDE568F3ull, 0x00486A5C37716E9Aull },
    { /* 906 */ 0x04855E6012157981ull, 0x004855E601215798ull },
    { /* 907 */ 0xA36C19F788538BB7ull, 0x0048417B57C78CD7ull },
    { /* 908 */ 0x1D52537428995FDCull, 0x00482D1C319F0362ull },
    { /* 909 */ 0x163FA5E10559D6E2ull, 0x004818C884EDB1B5ull },
    { /* 910 */ 0x0480480480480481ull, 0x0048048048048048ull },
    { /* 911 */ 0x4688922008FE086Full, 0x0047F043713F3A2Bull },
    { /* 912 */ 0x1F7047DC11F7047Eull, 0x0047DC11F7047DC1ull },
    { /* 913 */ 0x672F62FAAC297F95ull, 0x0047C7EBCFC5AD90ull },
    { /* 914 */ 0xBC38047B3D0F1FEFull, 0x0047B3D0F1FEE130ull },
    { /* 915 */ 0x0479FC15436D6501ull, 0x00479FC15436D650ull },
    { /* 916 */ 0x0C4C0478BBCECFEFull, 0x00478BBCECFEE1D1ull },
    { /* 917 */ 0x122568B06FAB21C8ull, 0x004777C3B2F2E103ull },
    { /* 918 */ 0x0E804763D59CB92Bull, 0x004763D59CB92AF2ull },
    { /* 919 */ 0x87A916904BC4F1CCull, 0x00474FF2A10281CFull },
    { /* 920 */ 0xC1AB68A0473C1AB7ull, 0x00473C1AB68A0473ull },
    { /* 921 */ 0x1AF6457D5C011CA2ull, 0x0047284DD4151FF7ull },
    { /* 922 */ 0x66BBB24186F101ABull, 0x0047148BF0738163ull },
    { /* 923 */ 0x16774365CA315E95ull, 0x004700D5027F077Dull },
    { /* 924 */ 0x046ED29011BB4A41ull, 0x0046ED29011BB4A4ull },
    { /* 925 */ 0xB166AD3FEE499E08ull, 0x0046D987E337A0CBull },
    { /* 926 */ 0xC827CF57E9E2247Full, 0x0046C5F19FCAEB8Aull },
    { /* 927 */ 0xB9DAFE9E84011ACAull, 0x0046B2662DD7AE41ull },
    { /* 928 */ 0x469EE58469EE5847ull, 0x00469EE58469EE58ull },
    { /* 929 */ 0xC6219E732FAC3A6Cull, 0x00468B6F9A978F91ull },
    { /* 930 */ 0x0467804678046781ull, 0x0046780467804678ull },
    { /* 931 */ 0x87496AF6ED06DFD5ull, 0x004664A3E24D8ADCull },
    { /* 932 */ 0x119453808CA29C05ull, 0x0046514E02328A70ull },
    { /* 933 */ 0x3912623AB7D64B2Full, 0x00463E02BE6C1B70ull },
    { /* 934 */ 0xE523A1B68B3CD915ull, 0x00462AC20E40AF6Aull },
    { /* 935 */ 0x8BE90046178BE901ull, 0x0046178BE9004617ull },
    { /* 936 */ 0x0460460460460461ull, 0x0046046046046046ull },
    { /* 937 */ 0xC42A9F02757B3803ull, 0x0045F13F1CAFF2E2ull },
    { /* 938 */ 0x6011778A191BD685ull, 0x0045DE28646F5A10ull },
    { /* 939 */ 0x26B6A9937E3A57CAull, 0x0045CB1C14B84C56ull },
    { /* 940 */ 0xAD3560F4045B81A3ull, 0x0045B81A2509CDE3ull },
    { /* 941 */ 0x25D0A9C284377F98ull, 0x0045A5228CEC23E9ull },
    { /* 942 */ 0x5923543F0C804593ull, 0x0045923543F0C804ull },
    { /* 943 */ 0x1A9ABD7D2647204Full, 0x00457F5241B25BC2ull },
    { /* 944 */ 0x115B1E5F75270D05ull, 0x00456C797DD49C34ull },
    { /* 945 */ 0xAF004559AAF00456ull, 0x004559AAF004559Aull },
    { /* 946 */ 0x2E01151B9A3FDD5Dull, 0x004546E68FF75723ull },
    { /* 947 */ 0x71CECCE87B44EEF9ull, 0x0045342C556C66B9ull },
    { /* 948 */ 0xA31B011485F0E0ADull, 0x0045217C382B34EDull },
    { /* 949 */ 0x6300450ED6300451ull, 0x00450ED6300450EDull },
    { /* 950 */ 0x7019DE95D3CE6AB7ull, 0x0044FC3A34D11C90ull },
    { /* 951 */ 0x98E66D4A90D30B94ull, 0x0044E9A83E73C078ull },
    { /* 952 */ 0xD72044D72044D721ull, 0x0044D72044D72044ull },
    { /* 953 */ 0x70044C4A23FEECEEull, 0x0044C4A23FEECED7ull },
    { /* 954 */ 0xF5CD8D261AD59A08ull, 0x0044B22E27B702AEull },
    { /* 955 */ 0x06F839E6CD560C55ull, 0x00449FC3F4348A52ull },
    { /* 956 */ 0xA82AD85E4268F881ull, 0x00448D639D74C0CDull },
    { /* 957 */ 0x15EF6A32D353BA74ull, 0x00447B0D1B8D8246ull },
    { /* 958 */ 0xEBB0E6E1895A524Full, 0x004468C0669D2099ull },
    { /* 959 */ 0x7DBB20D58E481339ull, 0x0044567D76CA5817ull },
    { /* 960 */ 0x4444444444444445ull, 0x0044444444444444ull },
    { /* 961 */ 0x35CF84653A56D7C7ull, 0x00443214C74254B6ull },
    { /* 962 */ 0xEF80441FEEF80442ull, 0x00441FEEF80441FEull },
    { /* 963 */ 0x8A3C14341A956659ull, 0x00440DD2CED202A8ull },
    { /* 964 */ 0xFBC043FBC043FBC1ull, 0x0043FBC043FBC043ull },
    { /* 965 */ 0xE3157CF30043E9B8ull, 0x0043E9B74FD9CC88ull },
    { /* 966 */ 0xA010F5EDFAB325A2ull, 0x0043D7B7EACC9686ull },
    { /* 967 */ 0x95D73B09440987D0ull, 0x0043C5C20D3C9FE6ull },
    { /* 968 */ 0x789854A0CB1B810Full, 0x0043B3D5AF9A723Full },
    { /* 969 */ 0x870043A1F2CA5E95ull, 0x0043A1F2CA5E9479ull },
    { /* 970 */ 0x901956098043901Aull, 0x0043901956098043ull },
    { /* 971 */ 0xA69FC4F17FDE40DCull, 0x00437E494B239798ull },
    { /* 972 */ 0x63075FDE49BEAEE2ull, 0x00436C82A23D1A56ull },
    { /* 973 */ 0x95B4C0978C3BFCD8ull, 0x00435AC553EE1BE3ull },
    { /* 974 */ 0x4B2BA1613F9B1266ull, 0x0043491158D678E7ull },
    { /* 975 */ 0x0433766A99DCD101ull, 0x00433766A99DCD10ull },
    { /* 976 */ 0x04325C53EF368EB1ull, 0x004325C53EF368EBull },
    { /* 977 */ 0x983CCA48D7E8F111ull, 0x0043142D118E47CBull },
    { /* 978 */ 0x39963FDE7EB0F2EAull, 0x0043029E1A2D05C2ull },
    { /* 979 */ 0x6E9C5F2ECE94010Cull, 0x0042F1185195D5A3ull },
    { /* 980 */ 0x4D528C042DF9BB0Aull, 0x0042DF9BB096771Eull },
    { /* 981 */ 0x830042CE2830042Dull, 0x0042CE2830042CE2ull },
    { /* 982 */ 0xC48FE6F938D4B99Dull, 0x0042BCBDC8BBB2D5ull },
    { /* 983 */ 0x8B96C99219859965ull, 0x0042AB5C73A13458ull },
    { /* 984 */ 0x0429A0429A0429A1ull, 0x00429A0429A0429Aull },
    { /* 985 */ 0x0FDA931A3FEF5DD3ull, 0x004288B4E3ABCAFBull },
    { /* 986 */ 0x42776E9ABE0D8043ull, 0x0042776E9ABE0D80ull },
    { /* 987 */ 0xBD576886DF9419F0ull, 0x0042663147D89352ull },
    { /* 988 */ 0xCE404254FCE40426ull, 0x004254FCE404254Full },
    { /* 989 */ 0x37226D3BCB31F521ull, 0x004243D16850C2A7ull },
    { /* 990 */ 0x04232AECDD597881ull, 0x004232AECDD59788ull },
    { /* 991 */ 0xD5A27C833AA3C72Cull, 0x004221950DB0F3DBull },
    { /* 992 */ 0x8421084210842109ull, 0x0042108421084210ull },
    { /* 993 */ 0x041FF7C0107FDF01ull, 0x0041FF7C0107FDF0ull },
    { /* 994 */ 0x704A2C4C3BC020F8ull, 0x0041EE7CA6E3AB86ull },
    { /* 995 */ 0x206B07F9D33B6EE4ull, 0x0041DD860BD5CE16ull },
    { /* 996 */ 0xB3EB701073260A48ull, 0x0041CC98291FDF19ull },
    { /* 997 */ 0xF6C19AD51E8E4032ull, 0x0041BBB2F80A4553ull },
    { /* 998 */ 0x87F3AFF7CAA531C4ull, 0x0041AAD671E44BEDull },
    { /* 999 */ 0x2900419A0290041Aull, 0x00419A02900419A0ull },
    { /* 1000 */ 0x9DB22D0E56041894ull, 0x004189374BC6A7EFull },
    { /* 1001 */ 0x04178749E8FBA701ull, 0x004178749E8FBA70ull },
    { /* 1002 */ 0x8C84DAB2D7A1FAE4ull, 0x004167BA81C9D619ull },
    { /* 1003 */ 0x79BF2BA522F793C8ull, 0x00415708EEE638A9ull },
    { /* 1004 */ 0x5197F7D734041466ull, 0x0041465FDF5CD010ull },
    { /* 1005 */ 0x2676B3D6399172E2ull, 0x004135BF4CAC31EDull },
    { /* 1006 */ 0xE27B2A3E17695A16ull, 0x0041252730599315ull },
    { /* 1007 */ 0x7D13933192AF6981ull, 0x0041149783F0BF2Cull },
    { /* 1008 */ 0x0410410410410411ull, 0x0041041041041041ull },
    { /* 1009 */ 0x616D5A11C299C093ull, 0x0040F391612C6680ull },
    { /* 1010 */ 0xC739487DB8040E32ull, 0x0040E31ADE091FEFull },
    { /* 1011 */ 0xAB2C50040D2ACB15ull, 0x0040D2ACB1401034ull },
    { /* 1012 */ 0x3BB3194BE3AB0104ull, 0x0040C246D47D7869ull },
    { /* 1013 */ 0x385AFA30040B1E95ull, 0x0040B1E94173FEFDull },
    { /* 1014 */ 0x17BB5452CF058DE3ull, 0x0040A193F1DCA7A3ull },
    { /* 1015 */ 0x6523900409146DF8ull, 0x00409146DF76CB49ull },
    { /* 1016 */ 0x4081020408102041ull, 0x0040810204081020ull },
    { /* 1017 */ 0xEB1B7004070C5596ull, 0x004070C5595C61AAull },
    { /* 1018 */ 0x4BF1EAE05078B510ull, 0x00406090D945E8DDull },
    { /* 1019 */ 0x56AC576D489AC172ull, 0x004050647D9D0445ull },
    { /* 1020 */ 0x4040404040404041ull, 0x0040404040404040ull },
    { /* 1021 */ 0x6C916D11CD5A0383ull, 0x004030241B144F3Bull },
    { /* 1022 */ 0x0080402010080403ull, 0x0040201008040201ull },
    { /* 1023 */ 0x0401004010040101ull, 0x0040100401004010ull },
};

static inline
std::size_t fast_mod(std::size_t a, std::size_t b)
{
    return ((a < b) ? a : ((a < b * 2) ? (a - b) : (a % b)));
}

static inline
std::uint64_t computeMul_u32(uint32_t divisor) {
    if (divisor != 0)
        return (UINT64_C(0xFFFFFFFFFFFFFFFF) / divisor + 1);
    else
        return 0;
}

static inline
_uint128_t computeMul_u64(uint64_t divisor) {
#if defined(HAS_INT128_T) && defined(HAS_INT128_DIV)
    if (divisor != 0) {
        __uint128_t N128 = ((__uint128_t)UINT64_C(0xFFFFFFFFFFFFFFFF) << 64) | UINT64_C(0xFFFFFFFFFFFFFFFF);
        __uint128_t mul128 = N128 / divisor + 1;
        return _uint128_t(mul128);
    } else {
        return 0;
    }
#else
    if (divisor != 0) {
        _uint128_t N128(0xFFFFFFFFFFFFFFFFull, 0xFFFFFFFFFFFFFFFFull);
        _uint128_t mul128 = _uint128_t::bigint_128_div(N128, (_uint128_t)divisor) + 1;
        return mul128;
    } else {
        return 0;
    }
#endif
}

static inline
ModRatio32 preComputeMod_u32(std::uint32_t divisor)
{
    ModRatio32 modRatio;
    modRatio.inverse = computeMul_u32(divisor);
    return modRatio;
}

static inline
ModRatio64 preComputeMod_u64(std::uint64_t divisor)
{
    ModRatio64 modRatio;
    _uint128_t mul128 = computeMul_u64(divisor);
    modRatio.inv_low = mul128.low;
    modRatio.inv_high = mul128.high;
    return modRatio;
}

static inline
void genModRatioTbl_u32()
{
    ModRatio32 modRatioTbl[kMaxModTable];
    for (std::uint32_t n = 0; n < kMaxModTable; n++) {
        modRatioTbl[n] = preComputeMod_u32(n);
    }

    FILE * fp = fopen("mod_ratio_tbl32.h", "w");
    if (fp == NULL) return;

    fprintf(fp, "\n");
    fprintf(fp, "static const ModRatio32 mod_ratio_tbl32[kMaxModTable] = {\n");
    for (std::uint32_t n = 0; n < kMaxModTable; n++) {
        if ((n % 2) == 0) {
            fprintf(fp, "    ");
        }
        fprintf(fp, "{ /* %3u */ 0x%08X%08Xull },",
                    n,
                    (uint32_t)(modRatioTbl[n].inverse >> 32u),
                    (uint32_t)(modRatioTbl[n].inverse & 0xFFFFFFFFul));
        if ((n % 2) == 1) {
            fprintf(fp, "\n");
        } else {
            fprintf(fp, " ");
        }
    }
    fprintf(fp, "};\n");

    fclose(fp);
}

static inline
void genModRatioTbl_u64()
{
    ModRatio64 modRatioTbl[kMaxModTable];
    for (std::uint32_t n = 0; n < kMaxModTable; n++) {
        modRatioTbl[n] = preComputeMod_u64(n);
    }

    FILE * fp = fopen("mod_ratio_tbl64.h", "w");
    if (fp == NULL) return;

    fprintf(fp, "\n");
    fprintf(fp, "static const ModRatio64 mod_ratio_tbl64[kMaxModTable] = {\n");
    for (std::uint32_t n = 0; n < kMaxModTable; n++) {
        if ((n % 1) == 0) {
            fprintf(fp, "    ");
        }
        fprintf(fp, "{ /* %3u */ 0x%08X%08Xull, 0x%08X%08Xull },",
                    n,
                    (uint32_t)(modRatioTbl[n].inv_low >> 32u),
                    (uint32_t)(modRatioTbl[n].inv_low & 0xFFFFFFFFul),
                    (uint32_t)(modRatioTbl[n].inv_high >> 32u),
                    (uint32_t)(modRatioTbl[n].inv_high & 0xFFFFFFFFul));
        if ((n % 1) == 0) {
            fprintf(fp, "\n");
        } else {
            fprintf(fp, " ");
        }
    }
    fprintf(fp, "};\n");

    fclose(fp);
}

static inline
void genModRatioTbl()
{
    genModRatioTbl_u32();
    genModRatioTbl_u64();
}

static inline
std::uint32_t fast_mod_u32(std::uint32_t value, std::uint32_t divisor)
{
    if (divisor >= kMaxModTable) {
        return (value % divisor);
    } else {
        ModRatio32 rt = mod_ratio_tbl32[divisor];
        std::uint64_t low64_bits = (std::uint64_t)value * rt.inverse;
        std::uint32_t result = (std::uint32_t)mul_u64x32_high(low64_bits, divisor);
        return result;
    }
}

static inline
std::uint64_t fast_mod_u64(std::uint64_t value, std::uint32_t divisor)
{
    if (divisor >= kMaxModTable) {
        return (value % divisor);
    } else {
        ModRatio32 rt = mod_ratio_tbl32[divisor];
        std::uint64_t low64_bits = value * rt.inverse;
        std::uint32_t result = (std::uint32_t)mul_u64x32_high(low64_bits, divisor);
        return result;
    }
}

static inline
std::uint64_t fast_mod_u64(std::uint64_t value, std::uint64_t divisor)
{
    if (divisor >= kMaxModTable) {
        return (value % divisor);
    } else {
        ModRatio32 rt = mod_ratio_tbl32[divisor];
        std::uint64_t low64_bits = value * rt.inverse;
        std::uint32_t result = (std::uint32_t)mul_u64x64_high(low64_bits, divisor);
        return result;
    }
}

} // namespace jstd

#endif // JSTD_FAST_MOD_H
